Manager: replace gorm.Model
with our own persistence.Model
struct
`persistence.Model` contains the common database fields for most model structs. It is a copy of `gorm.Model`, but without the `DeletedAt` field (which triggers Gorm's soft deletion). Soft deletion is not used by Flamenco. If it ever becomes necessary to support soft-deletion, see https://gorm.io/docs/delete.html#Soft-Delete
This commit is contained in:
parent
ec5b3aac52
commit
02bc03ae2b
@ -10,7 +10,6 @@ import (
|
||||
"git.blender.org/flamenco/pkg/api"
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
func TestFetchTask(t *testing.T) {
|
||||
@ -24,7 +23,7 @@ func TestFetchTask(t *testing.T) {
|
||||
jobUUID := "8b179118-0189-478a-b463-73798409898c"
|
||||
|
||||
dbTask := persistence.Task{
|
||||
Model: gorm.Model{
|
||||
Model: persistence.Model{
|
||||
ID: 327,
|
||||
CreatedAt: mf.clock.Now().Add(-30 * time.Second),
|
||||
UpdatedAt: mf.clock.Now(),
|
||||
|
@ -16,7 +16,6 @@ import (
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/labstack/echo/v4"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"git.blender.org/flamenco/internal/manager/api_impl/mocks"
|
||||
"git.blender.org/flamenco/internal/manager/persistence"
|
||||
@ -143,7 +142,7 @@ func assertResponseEmpty(t *testing.T, echoCtx echo.Context) {
|
||||
|
||||
func testWorker() persistence.Worker {
|
||||
return persistence.Worker{
|
||||
Model: gorm.Model{ID: 1},
|
||||
Model: persistence.Model{ID: 1},
|
||||
UUID: "e7632d62-c3b8-4af0-9e78-01752928952c",
|
||||
Name: "дрон",
|
||||
Address: "fe80::5054:ff:fede:2ad7",
|
||||
|
@ -21,6 +21,16 @@ type DB struct {
|
||||
gormDB *gorm.DB
|
||||
}
|
||||
|
||||
// Model contains the common database fields for most model structs.
|
||||
// It is a copy of the gorm.Model struct, but without the `DeletedAt` field.
|
||||
// Soft deletion is not used by Flamenco. If it ever becomes necessary to
|
||||
// support soft-deletion, see https://gorm.io/docs/delete.html#Soft-Delete
|
||||
type Model struct {
|
||||
ID uint `gorm:"primarykey"`
|
||||
CreatedAt time.Time
|
||||
UpdatedAt time.Time
|
||||
}
|
||||
|
||||
func OpenDB(ctx context.Context, dsn string) (*DB, error) {
|
||||
log.Info().Str("dsn", dsn).Msg("opening database")
|
||||
|
||||
|
@ -16,7 +16,7 @@ import (
|
||||
)
|
||||
|
||||
type Job struct {
|
||||
gorm.Model
|
||||
Model
|
||||
UUID string `gorm:"type:char(36);default:'';unique;index"`
|
||||
|
||||
Name string `gorm:"type:varchar(64);default:''"`
|
||||
@ -33,7 +33,7 @@ type StringInterfaceMap map[string]interface{}
|
||||
type StringStringMap map[string]string
|
||||
|
||||
type Task struct {
|
||||
gorm.Model
|
||||
Model
|
||||
UUID string `gorm:"type:char(36);default:'';unique;index"`
|
||||
|
||||
Name string `gorm:"type:varchar(64);default:''"`
|
||||
|
@ -8,13 +8,11 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"gorm.io/gorm"
|
||||
|
||||
"git.blender.org/flamenco/pkg/api"
|
||||
)
|
||||
|
||||
type Worker struct {
|
||||
gorm.Model
|
||||
Model
|
||||
UUID string `gorm:"type:char(36);default:'';unique;index;default:''"`
|
||||
Secret string `gorm:"type:varchar(255);default:''"`
|
||||
Name string `gorm:"type:varchar(64);default:''"`
|
||||
|
@ -10,7 +10,6 @@ import (
|
||||
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"git.blender.org/flamenco/internal/manager/persistence"
|
||||
"git.blender.org/flamenco/internal/manager/task_state_machine/mocks"
|
||||
@ -442,13 +441,13 @@ func (m *StateMachineMocks) expectBroadcastTaskChange(
|
||||
/* taskWithStatus() creates a task of a certain status, with a job of a certain status. */
|
||||
func taskWithStatus(jobStatus api.JobStatus, taskStatus api.TaskStatus) *persistence.Task {
|
||||
job := persistence.Job{
|
||||
Model: gorm.Model{ID: 47},
|
||||
Model: persistence.Model{ID: 47},
|
||||
UUID: "test-job-f3f5-4cef-9cd7-e67eb28eaf3e",
|
||||
|
||||
Status: jobStatus,
|
||||
}
|
||||
task := persistence.Task{
|
||||
Model: gorm.Model{ID: 327},
|
||||
Model: persistence.Model{ID: 327},
|
||||
UUID: "testtask-0001-4e28-aeea-8cbaf2fc96a5",
|
||||
|
||||
JobID: job.ID,
|
||||
@ -464,7 +463,7 @@ func taskWithStatus(jobStatus api.JobStatus, taskStatus api.TaskStatus) *persist
|
||||
func taskOfSameJob(task *persistence.Task, taskStatus api.TaskStatus) *persistence.Task {
|
||||
newTaskID := task.ID + 1
|
||||
return &persistence.Task{
|
||||
Model: gorm.Model{ID: newTaskID},
|
||||
Model: persistence.Model{ID: newTaskID},
|
||||
UUID: fmt.Sprintf("testtask-%04d-4e28-aeea-8cbaf2fc96a5", newTaskID),
|
||||
JobID: task.JobID,
|
||||
Job: task.Job,
|
||||
|
@ -10,7 +10,6 @@ import (
|
||||
|
||||
"github.com/golang/mock/gomock"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"gorm.io/gorm"
|
||||
|
||||
"git.blender.org/flamenco/internal/manager/persistence"
|
||||
"git.blender.org/flamenco/pkg/api"
|
||||
@ -114,7 +113,7 @@ func TestTaskTimeout(t *testing.T) {
|
||||
worker := persistence.Worker{
|
||||
UUID: "WORKER-UUID",
|
||||
Name: "Tester",
|
||||
Model: gorm.Model{ID: 47},
|
||||
Model: persistence.Model{ID: 47},
|
||||
}
|
||||
taskUnassigned := persistence.Task{
|
||||
UUID: "TASK-UUID-UNASSIGNED",
|
||||
|
@ -9,7 +9,6 @@ import (
|
||||
"git.blender.org/flamenco/internal/manager/persistence"
|
||||
"git.blender.org/flamenco/pkg/api"
|
||||
"github.com/golang/mock/gomock"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
const workerTimeout = 20 * time.Minute
|
||||
@ -31,7 +30,7 @@ func TestWorkerTimeout(t *testing.T) {
|
||||
worker := persistence.Worker{
|
||||
UUID: "WORKER-UUID",
|
||||
Name: "Tester",
|
||||
Model: gorm.Model{ID: 47},
|
||||
Model: persistence.Model{ID: 47},
|
||||
LastSeenAt: lastSeenAt,
|
||||
Status: api.WorkerStatusAsleep,
|
||||
StatusRequested: api.WorkerStatusAwake,
|
||||
|
Loading…
Reference in New Issue
Block a user