
Replace old used-to-be-GORM datastructures (#104305) with sqlc-generated structs. This also makes it possible to use more specific structs that are more taylored to the specific queries, increasing efficiency. This commit covers job blocklists and last-rendered images. Functional changes are kept to a minimum, as the API still serves the same data. Because this work covers so much of Flamenco's code, it's been split up into different commits. Each commit brings Flamenco to a state where it compiles and unit tests pass. Only the result of the final commit has actually been tested properly. Ref: #104343
42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package persistence
|
|
|
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
"errors"
|
|
|
|
"projects.blender.org/studio/flamenco/internal/manager/persistence/sqlc"
|
|
)
|
|
|
|
// LastRendered only has one entry in its database table, to indicate the job
|
|
// that was the last to receive a "last rendered image" from a Worker.
|
|
// This is used to show the global last-rendered image in the web interface.
|
|
|
|
// SetLastRendered sets this job as the one with the most recent rendered image.
|
|
func (db *DB) SetLastRendered(ctx context.Context, j *Job) error {
|
|
queries := db.queries()
|
|
|
|
now := db.nowNullable()
|
|
return queries.SetLastRendered(ctx, sqlc.SetLastRenderedParams{
|
|
CreatedAt: now.Time,
|
|
UpdatedAt: now,
|
|
JobID: int64(j.ID),
|
|
})
|
|
}
|
|
|
|
// GetLastRendered returns the UUID of the job with the most recent rendered image.
|
|
func (db *DB) GetLastRenderedJobUUID(ctx context.Context) (string, error) {
|
|
queries := db.queries()
|
|
|
|
jobUUID, err := queries.GetLastRenderedJobUUID(ctx)
|
|
if errors.Is(err, sql.ErrNoRows) {
|
|
return "", nil
|
|
}
|
|
if err != nil {
|
|
return "", jobError(err, "finding job with most rencent render")
|
|
}
|
|
return jobUUID, nil
|
|
}
|