mirror of
https://github.com/coder/coder.git
synced 2025-07-06 15:41:45 +00:00
Persisting presets defined with prebuilds to DB
Signed-off-by: Danny Kopping <danny@coder.com>
This commit is contained in:
@ -3150,6 +3150,13 @@ func (q *querier) InsertPresetParameters(ctx context.Context, arg database.Inser
|
||||
return q.db.InsertPresetParameters(ctx, arg)
|
||||
}
|
||||
|
||||
func (q *querier) InsertPresetPrebuild(ctx context.Context, arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild, error) {
|
||||
if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
|
||||
return database.TemplateVersionPresetPrebuild{}, err
|
||||
}
|
||||
return q.db.InsertPresetPrebuild(ctx, arg)
|
||||
}
|
||||
|
||||
// TODO: We need to create a ProvisionerJob resource type
|
||||
func (q *querier) InsertProvisionerJob(ctx context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
|
||||
// if err := q.authorizeContext(ctx, policy.ActionCreate, rbac.ResourceSystem); err != nil {
|
||||
|
@ -8195,6 +8195,15 @@ func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.Ins
|
||||
return presetParameters, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertPresetPrebuild(ctx context.Context, arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild, error) {
|
||||
err := validateDatabaseType(arg)
|
||||
if err != nil {
|
||||
return database.TemplateVersionPresetPrebuild{}, err
|
||||
}
|
||||
|
||||
panic("not implemented")
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertProvisionerJob(_ context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
|
||||
if err := validateDatabaseType(arg); err != nil {
|
||||
return database.ProvisionerJob{}, err
|
||||
|
@ -1960,6 +1960,13 @@ func (m queryMetricsStore) InsertPresetParameters(ctx context.Context, arg datab
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
func (m queryMetricsStore) InsertPresetPrebuild(ctx context.Context, arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild, error) {
|
||||
start := time.Now()
|
||||
r0, r1 := m.s.InsertPresetPrebuild(ctx, arg)
|
||||
m.queryLatencies.WithLabelValues("InsertPresetPrebuild").Observe(time.Since(start).Seconds())
|
||||
return r0, r1
|
||||
}
|
||||
|
||||
func (m queryMetricsStore) InsertProvisionerJob(ctx context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
|
||||
start := time.Now()
|
||||
job, err := m.s.InsertProvisionerJob(ctx, arg)
|
||||
|
@ -190,6 +190,21 @@ func (mr *MockStoreMockRecorder) BulkMarkNotificationMessagesSent(ctx, arg any)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "BulkMarkNotificationMessagesSent", reflect.TypeOf((*MockStore)(nil).BulkMarkNotificationMessagesSent), ctx, arg)
|
||||
}
|
||||
|
||||
// ClaimPrebuild mocks base method.
|
||||
func (m *MockStore) ClaimPrebuild(ctx context.Context, arg database.ClaimPrebuildParams) (database.ClaimPrebuildRow, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "ClaimPrebuild", ctx, arg)
|
||||
ret0, _ := ret[0].(database.ClaimPrebuildRow)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// ClaimPrebuild indicates an expected call of ClaimPrebuild.
|
||||
func (mr *MockStoreMockRecorder) ClaimPrebuild(ctx, arg any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "ClaimPrebuild", reflect.TypeOf((*MockStore)(nil).ClaimPrebuild), ctx, arg)
|
||||
}
|
||||
|
||||
// CleanTailnetCoordinators mocks base method.
|
||||
func (m *MockStore) CleanTailnetCoordinators(ctx context.Context) error {
|
||||
m.ctrl.T.Helper()
|
||||
@ -2616,6 +2631,21 @@ func (mr *MockStoreMockRecorder) GetTemplateParameterInsights(ctx, arg any) *gom
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTemplateParameterInsights", reflect.TypeOf((*MockStore)(nil).GetTemplateParameterInsights), ctx, arg)
|
||||
}
|
||||
|
||||
// GetTemplatePrebuildState mocks base method.
|
||||
func (m *MockStore) GetTemplatePrebuildState(ctx context.Context, templateID uuid.UUID) ([]database.GetTemplatePrebuildStateRow, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "GetTemplatePrebuildState", ctx, templateID)
|
||||
ret0, _ := ret[0].([]database.GetTemplatePrebuildStateRow)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetTemplatePrebuildState indicates an expected call of GetTemplatePrebuildState.
|
||||
func (mr *MockStoreMockRecorder) GetTemplatePrebuildState(ctx, templateID any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetTemplatePrebuildState", reflect.TypeOf((*MockStore)(nil).GetTemplatePrebuildState), ctx, templateID)
|
||||
}
|
||||
|
||||
// GetTemplateUsageStats mocks base method.
|
||||
func (m *MockStore) GetTemplateUsageStats(ctx context.Context, arg database.GetTemplateUsageStatsParams) ([]database.TemplateUsageStat, error) {
|
||||
m.ctrl.T.Helper()
|
||||
@ -4126,6 +4156,21 @@ func (mr *MockStoreMockRecorder) InsertPresetParameters(ctx, arg any) *gomock.Ca
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InsertPresetParameters", reflect.TypeOf((*MockStore)(nil).InsertPresetParameters), ctx, arg)
|
||||
}
|
||||
|
||||
// InsertPresetPrebuild mocks base method.
|
||||
func (m *MockStore) InsertPresetPrebuild(ctx context.Context, arg database.InsertPresetPrebuildParams) (database.TemplateVersionPresetPrebuild, error) {
|
||||
m.ctrl.T.Helper()
|
||||
ret := m.ctrl.Call(m, "InsertPresetPrebuild", ctx, arg)
|
||||
ret0, _ := ret[0].(database.TemplateVersionPresetPrebuild)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// InsertPresetPrebuild indicates an expected call of InsertPresetPrebuild.
|
||||
func (mr *MockStoreMockRecorder) InsertPresetPrebuild(ctx, arg any) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "InsertPresetPrebuild", reflect.TypeOf((*MockStore)(nil).InsertPresetPrebuild), ctx, arg)
|
||||
}
|
||||
|
||||
// InsertProvisionerJob mocks base method.
|
||||
func (m *MockStore) InsertProvisionerJob(ctx context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -60,6 +60,7 @@ type sqlcQuerier interface {
|
||||
BatchUpdateWorkspaceNextStartAt(ctx context.Context, arg BatchUpdateWorkspaceNextStartAtParams) error
|
||||
BulkMarkNotificationMessagesFailed(ctx context.Context, arg BulkMarkNotificationMessagesFailedParams) (int64, error)
|
||||
BulkMarkNotificationMessagesSent(ctx context.Context, arg BulkMarkNotificationMessagesSentParams) (int64, error)
|
||||
// TODO: rewrite to use named CTE instead?
|
||||
ClaimPrebuild(ctx context.Context, arg ClaimPrebuildParams) (ClaimPrebuildRow, error)
|
||||
CleanTailnetCoordinators(ctx context.Context) error
|
||||
CleanTailnetLostPeers(ctx context.Context) error
|
||||
@ -411,6 +412,7 @@ type sqlcQuerier interface {
|
||||
InsertOrganizationMember(ctx context.Context, arg InsertOrganizationMemberParams) (OrganizationMember, error)
|
||||
InsertPreset(ctx context.Context, arg InsertPresetParams) (TemplateVersionPreset, error)
|
||||
InsertPresetParameters(ctx context.Context, arg InsertPresetParametersParams) ([]TemplateVersionPresetParameter, error)
|
||||
InsertPresetPrebuild(ctx context.Context, arg InsertPresetPrebuildParams) (TemplateVersionPresetPrebuild, error)
|
||||
InsertProvisionerJob(ctx context.Context, arg InsertProvisionerJobParams) (ProvisionerJob, error)
|
||||
InsertProvisionerJobLogs(ctx context.Context, arg InsertProvisionerJobLogsParams) ([]ProvisionerJobLog, error)
|
||||
InsertProvisionerJobTimings(ctx context.Context, arg InsertProvisionerJobTimingsParams) ([]ProvisionerJobTiming, error)
|
||||
|
@ -5423,6 +5423,7 @@ type ClaimPrebuildRow struct {
|
||||
Name string `db:"name" json:"name"`
|
||||
}
|
||||
|
||||
// TODO: rewrite to use named CTE instead?
|
||||
func (q *sqlQuerier) ClaimPrebuild(ctx context.Context, arg ClaimPrebuildParams) (ClaimPrebuildRow, error) {
|
||||
row := q.db.QueryRowContext(ctx, claimPrebuild, arg.NewUserID, arg.NewName)
|
||||
var i ClaimPrebuildRow
|
||||
@ -5557,6 +5558,36 @@ func (q *sqlQuerier) GetTemplatePrebuildState(ctx context.Context, templateID uu
|
||||
return items, nil
|
||||
}
|
||||
|
||||
const insertPresetPrebuild = `-- name: InsertPresetPrebuild :one
|
||||
INSERT INTO template_version_preset_prebuilds (id, preset_id, desired_instances, invalidate_after_secs)
|
||||
VALUES ($1::uuid, $2::uuid, $3::int, $4::int)
|
||||
RETURNING id, preset_id, desired_instances, invalidate_after_secs
|
||||
`
|
||||
|
||||
type InsertPresetPrebuildParams struct {
|
||||
ID uuid.UUID `db:"id" json:"id"`
|
||||
PresetID uuid.UUID `db:"preset_id" json:"preset_id"`
|
||||
DesiredInstances int32 `db:"desired_instances" json:"desired_instances"`
|
||||
InvalidateAfterSecs int32 `db:"invalidate_after_secs" json:"invalidate_after_secs"`
|
||||
}
|
||||
|
||||
func (q *sqlQuerier) InsertPresetPrebuild(ctx context.Context, arg InsertPresetPrebuildParams) (TemplateVersionPresetPrebuild, error) {
|
||||
row := q.db.QueryRowContext(ctx, insertPresetPrebuild,
|
||||
arg.ID,
|
||||
arg.PresetID,
|
||||
arg.DesiredInstances,
|
||||
arg.InvalidateAfterSecs,
|
||||
)
|
||||
var i TemplateVersionPresetPrebuild
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
&i.PresetID,
|
||||
&i.DesiredInstances,
|
||||
&i.InvalidateAfterSecs,
|
||||
)
|
||||
return i, err
|
||||
}
|
||||
|
||||
const getPresetByWorkspaceBuildID = `-- name: GetPresetByWorkspaceBuildID :one
|
||||
SELECT
|
||||
template_version_presets.id, template_version_presets.template_version_id, template_version_presets.name, template_version_presets.created_at
|
||||
|
@ -72,6 +72,7 @@ GROUP BY t.using_active_version, t.template_id, t.template_version_id, p.count,
|
||||
p.template_version_id, t.deleted, t.deprecated;
|
||||
|
||||
-- name: ClaimPrebuild :one
|
||||
-- TODO: rewrite to use named CTE instead?
|
||||
UPDATE workspaces w
|
||||
SET owner_id = @new_user_id::uuid,
|
||||
name = @new_name::text,
|
||||
@ -87,3 +88,8 @@ WHERE w.id IN (SELECT p.id
|
||||
ORDER BY random()
|
||||
LIMIT 1 FOR UPDATE OF p SKIP LOCKED)
|
||||
RETURNING w.id, w.name;
|
||||
|
||||
-- name: InsertPresetPrebuild :one
|
||||
INSERT INTO template_version_preset_prebuilds (id, preset_id, desired_instances, invalidate_after_secs)
|
||||
VALUES (@id::uuid, @preset_id::uuid, @desired_instances::int, @invalidate_after_secs::int)
|
||||
RETURNING *;
|
||||
|
Reference in New Issue
Block a user