feat(kol): repo support for cross-tenant revision lookup

This commit is contained in:
2026-04-17 14:51:54 +08:00
parent d0747825e6
commit 26bc8a3749
10 changed files with 156 additions and 20 deletions
@@ -62,9 +62,9 @@ func (q *Queries) CreateAuditLog(ctx context.Context, arg CreateAuditLogParams)
}
const createGenerationTask = `-- name: CreateGenerationTask :one
INSERT INTO generation_tasks (tenant_id, operator_id, article_id, quota_reservation_id, task_type, input_params_json, status)
INSERT INTO generation_tasks (tenant_id, operator_id, article_id, quota_reservation_id, task_type, request_hash, input_params_json, status)
VALUES ($1, $2, $3, $4,
$5, $6, 'queued')
$5, $6, $7, 'queued')
RETURNING id
`
@@ -74,6 +74,7 @@ type CreateGenerationTaskParams struct {
ArticleID pgtype.Int8 `json:"article_id"`
QuotaReservationID pgtype.Int8 `json:"quota_reservation_id"`
TaskType string `json:"task_type"`
RequestHash pgtype.Text `json:"request_hash"`
InputParamsJson []byte `json:"input_params_json"`
}
@@ -84,6 +85,7 @@ func (q *Queries) CreateGenerationTask(ctx context.Context, arg CreateGeneration
arg.ArticleID,
arg.QuotaReservationID,
arg.TaskType,
arg.RequestHash,
arg.InputParamsJson,
)
var id int64
@@ -91,6 +93,36 @@ func (q *Queries) CreateGenerationTask(ctx context.Context, arg CreateGeneration
return id, err
}
const createTaskRecord = `-- name: CreateTaskRecord :one
INSERT INTO task_records (tenant_id, operator_id, task_type, resource_type, resource_id, status)
VALUES ($1, $2, $3,
$4, $5, $6)
RETURNING id
`
type CreateTaskRecordParams struct {
TenantID int64 `json:"tenant_id"`
OperatorID pgtype.Int8 `json:"operator_id"`
TaskType string `json:"task_type"`
ResourceType string `json:"resource_type"`
ResourceID int64 `json:"resource_id"`
Status string `json:"status"`
}
func (q *Queries) CreateTaskRecord(ctx context.Context, arg CreateTaskRecordParams) (int64, error) {
row := q.db.QueryRow(ctx, createTaskRecord,
arg.TenantID,
arg.OperatorID,
arg.TaskType,
arg.ResourceType,
arg.ResourceID,
arg.Status,
)
var id int64
err := row.Scan(&id)
return id, err
}
const updateGenerationTaskStatus = `-- name: UpdateGenerationTaskStatus :exec
UPDATE generation_tasks SET status = $1, error_message = $2,
started_at = $3, completed_at = $4, updated_at = NOW()
@@ -117,3 +149,35 @@ func (q *Queries) UpdateGenerationTaskStatus(ctx context.Context, arg UpdateGene
)
return err
}
const updateTaskRecordStatus = `-- name: UpdateTaskRecordStatus :exec
UPDATE task_records
SET status = $1,
error_message = $2,
updated_at = NOW()
WHERE tenant_id = $3
AND task_type = $4
AND resource_type = $5
AND resource_id = $6
`
type UpdateTaskRecordStatusParams struct {
Status string `json:"status"`
ErrorMessage pgtype.Text `json:"error_message"`
TenantID int64 `json:"tenant_id"`
TaskType string `json:"task_type"`
ResourceType string `json:"resource_type"`
ResourceID int64 `json:"resource_id"`
}
func (q *Queries) UpdateTaskRecordStatus(ctx context.Context, arg UpdateTaskRecordStatusParams) error {
_, err := q.db.Exec(ctx, updateTaskRecordStatus,
arg.Status,
arg.ErrorMessage,
arg.TenantID,
arg.TaskType,
arg.ResourceType,
arg.ResourceID,
)
return err
}