mirror of
https://github.com/mentos1386/zdravko.git
synced 2024-11-29 10:41:19 +00:00
68 lines
1.7 KiB
Go
68 lines
1.7 KiB
Go
|
package services
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
|
||
|
"code.tjo.space/mentos1386/zdravko/database/models"
|
||
|
"github.com/jmoiron/sqlx"
|
||
|
)
|
||
|
|
||
|
type CheckHistoryWithCheck struct {
|
||
|
*models.CheckHistory
|
||
|
CheckName string `db:"check_name"`
|
||
|
CheckId string `db:"check_id"`
|
||
|
}
|
||
|
|
||
|
func GetLastNCheckHistory(ctx context.Context, db *sqlx.DB, n int) ([]*CheckHistoryWithCheck, error) {
|
||
|
var checkHistory []*CheckHistoryWithCheck
|
||
|
err := db.SelectContext(ctx, &checkHistory, `
|
||
|
SELECT
|
||
|
mh.*,
|
||
|
wg.name AS worker_group_name,
|
||
|
m.name AS check_name,
|
||
|
m.id AS check_id
|
||
|
FROM check_histories mh
|
||
|
LEFT JOIN worker_groups wg ON mh.worker_group_id = wg.id
|
||
|
LEFT JOIN check_worker_groups mwg ON mh.check_id = mwg.check_id
|
||
|
LEFT JOIN checks m ON mwg.check_id = m.id
|
||
|
ORDER BY mh.created_at DESC
|
||
|
LIMIT $1
|
||
|
`, n)
|
||
|
return checkHistory, err
|
||
|
}
|
||
|
|
||
|
func GetCheckHistoryForCheck(ctx context.Context, db *sqlx.DB, checkId string) ([]*models.CheckHistory, error) {
|
||
|
var checkHistory []*models.CheckHistory
|
||
|
err := db.SelectContext(ctx, &checkHistory, `
|
||
|
SELECT
|
||
|
mh.*,
|
||
|
wg.name AS worker_group_name,
|
||
|
wg.id AS worker_group_id
|
||
|
FROM check_histories as mh
|
||
|
LEFT JOIN worker_groups wg ON mh.worker_group_id = wg.id
|
||
|
LEFT JOIN check_worker_groups mwg ON mh.check_id = mwg.check_id
|
||
|
WHERE mh.check_id = $1
|
||
|
ORDER BY mh.created_at DESC
|
||
|
`, checkId)
|
||
|
return checkHistory, err
|
||
|
}
|
||
|
|
||
|
func AddHistoryForCheck(ctx context.Context, db *sqlx.DB, history *models.CheckHistory) error {
|
||
|
_, err := db.NamedExecContext(ctx,
|
||
|
`
|
||
|
INSERT INTO check_histories (
|
||
|
check_id,
|
||
|
worker_group_id,
|
||
|
status,
|
||
|
note
|
||
|
) VALUES (
|
||
|
:check_id,
|
||
|
:worker_group_id,
|
||
|
:status,
|
||
|
:note
|
||
|
)`,
|
||
|
history,
|
||
|
)
|
||
|
return err
|
||
|
}
|