mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd/database): add support for presets (#16509)
This pull requests adds the necessary migrations and queries to support presets within the coderd database. Future PRs will build functionality to the provisioners and the frontend.
This commit is contained in:
@@ -90,6 +90,8 @@ func New() database.Store {
|
||||
runtimeConfig: map[string]string{},
|
||||
userStatusChanges: make([]database.UserStatusChange, 0),
|
||||
telemetryItems: make([]database.TelemetryItem, 0),
|
||||
presets: make([]database.TemplateVersionPreset, 0),
|
||||
presetParameters: make([]database.TemplateVersionPresetParameter, 0),
|
||||
},
|
||||
}
|
||||
// Always start with a default org. Matching migration 198.
|
||||
@@ -262,6 +264,8 @@ type data struct {
|
||||
defaultProxyIconURL string
|
||||
userStatusChanges []database.UserStatusChange
|
||||
telemetryItems []database.TelemetryItem
|
||||
presets []database.TemplateVersionPreset
|
||||
presetParameters []database.TemplateVersionPresetParameter
|
||||
}
|
||||
|
||||
func tryPercentile(fs []float64, p float64) float64 {
|
||||
@@ -3776,6 +3780,61 @@ func (q *FakeQuerier) GetParameterSchemasByJobID(_ context.Context, jobID uuid.U
|
||||
return parameters, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetPresetByWorkspaceBuildID(_ context.Context, workspaceBuildID uuid.UUID) (database.TemplateVersionPreset, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
|
||||
for _, workspaceBuild := range q.workspaceBuilds {
|
||||
if workspaceBuild.ID != workspaceBuildID {
|
||||
continue
|
||||
}
|
||||
for _, preset := range q.presets {
|
||||
if preset.TemplateVersionID == workspaceBuild.TemplateVersionID {
|
||||
return preset, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
return database.TemplateVersionPreset{}, sql.ErrNoRows
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetPresetParametersByTemplateVersionID(_ context.Context, templateVersionID uuid.UUID) ([]database.TemplateVersionPresetParameter, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
|
||||
presets := make([]database.TemplateVersionPreset, 0)
|
||||
parameters := make([]database.TemplateVersionPresetParameter, 0)
|
||||
for _, preset := range q.presets {
|
||||
if preset.TemplateVersionID != templateVersionID {
|
||||
continue
|
||||
}
|
||||
presets = append(presets, preset)
|
||||
}
|
||||
for _, parameter := range q.presetParameters {
|
||||
for _, preset := range presets {
|
||||
if parameter.TemplateVersionPresetID != preset.ID {
|
||||
continue
|
||||
}
|
||||
parameters = append(parameters, parameter)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return parameters, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetPresetsByTemplateVersionID(_ context.Context, templateVersionID uuid.UUID) ([]database.TemplateVersionPreset, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
|
||||
presets := make([]database.TemplateVersionPreset, 0)
|
||||
for _, preset := range q.presets {
|
||||
if preset.TemplateVersionID == templateVersionID {
|
||||
presets = append(presets, preset)
|
||||
}
|
||||
}
|
||||
return presets, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) GetPreviousTemplateVersion(_ context.Context, arg database.GetPreviousTemplateVersionParams) (database.TemplateVersion, error) {
|
||||
if err := validateDatabaseType(arg); err != nil {
|
||||
return database.TemplateVersion{}, err
|
||||
@@ -8081,6 +8140,49 @@ func (q *FakeQuerier) InsertOrganizationMember(_ context.Context, arg database.I
|
||||
return organizationMember, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetParams) (database.TemplateVersionPreset, error) {
|
||||
err := validateDatabaseType(arg)
|
||||
if err != nil {
|
||||
return database.TemplateVersionPreset{}, err
|
||||
}
|
||||
|
||||
q.mutex.Lock()
|
||||
defer q.mutex.Unlock()
|
||||
|
||||
preset := database.TemplateVersionPreset{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionID: arg.TemplateVersionID,
|
||||
Name: arg.Name,
|
||||
CreatedAt: arg.CreatedAt,
|
||||
}
|
||||
q.presets = append(q.presets, preset)
|
||||
return preset, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertPresetParameters(_ context.Context, arg database.InsertPresetParametersParams) ([]database.TemplateVersionPresetParameter, error) {
|
||||
err := validateDatabaseType(arg)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
q.mutex.Lock()
|
||||
defer q.mutex.Unlock()
|
||||
|
||||
presetParameters := make([]database.TemplateVersionPresetParameter, 0, len(arg.Names))
|
||||
for i, v := range arg.Names {
|
||||
presetParameter := database.TemplateVersionPresetParameter{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionPresetID: arg.TemplateVersionPresetID,
|
||||
Name: v,
|
||||
Value: arg.Values[i],
|
||||
}
|
||||
presetParameters = append(presetParameters, presetParameter)
|
||||
q.presetParameters = append(q.presetParameters, presetParameter)
|
||||
}
|
||||
|
||||
return presetParameters, nil
|
||||
}
|
||||
|
||||
func (q *FakeQuerier) InsertProvisionerJob(_ context.Context, arg database.InsertProvisionerJobParams) (database.ProvisionerJob, error) {
|
||||
if err := validateDatabaseType(arg); err != nil {
|
||||
return database.ProvisionerJob{}, err
|
||||
|
||||
Reference in New Issue
Block a user