mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat(coderd): add support for presets to the coder API (#16526)
This pull request builds on the existing migrations and queries to add support for presets to the coder API.
This commit is contained in:
@@ -886,7 +886,6 @@ func (s *MethodTestSuite) TestOrganization() {
|
||||
JobID: job.ID,
|
||||
})
|
||||
insertPresetParams := database.InsertPresetParams{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionID: workspaceBuild.TemplateVersionID,
|
||||
Name: "test",
|
||||
}
|
||||
@@ -3817,13 +3816,11 @@ func (s *MethodTestSuite) TestSystemFunctions() {
|
||||
CreatedBy: user.ID,
|
||||
})
|
||||
preset, err := db.InsertPreset(ctx, database.InsertPresetParams{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionID: templateVersion.ID,
|
||||
Name: "test",
|
||||
})
|
||||
require.NoError(s.T(), err)
|
||||
_, err = db.InsertPresetParameters(ctx, database.InsertPresetParametersParams{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionPresetID: preset.ID,
|
||||
Names: []string{"test"},
|
||||
Values: []string{"test"},
|
||||
|
||||
@@ -8149,6 +8149,7 @@ func (q *FakeQuerier) InsertPreset(_ context.Context, arg database.InsertPresetP
|
||||
q.mutex.Lock()
|
||||
defer q.mutex.Unlock()
|
||||
|
||||
//nolint:gosimple // arg needs to keep its type for interface reasons and that type is not appropriate for preset below.
|
||||
preset := database.TemplateVersionPreset{
|
||||
ID: uuid.New(),
|
||||
TemplateVersionID: arg.TemplateVersionID,
|
||||
|
||||
Generated
+2
-2
@@ -1266,14 +1266,14 @@ COMMENT ON COLUMN template_version_parameters.display_order IS 'Specifies the or
|
||||
COMMENT ON COLUMN template_version_parameters.ephemeral IS 'The value of an ephemeral parameter will not be preserved between consecutive workspace builds.';
|
||||
|
||||
CREATE TABLE template_version_preset_parameters (
|
||||
id uuid NOT NULL,
|
||||
id uuid DEFAULT gen_random_uuid() NOT NULL,
|
||||
template_version_preset_id uuid NOT NULL,
|
||||
name text NOT NULL,
|
||||
value text NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE template_version_presets (
|
||||
id uuid NOT NULL,
|
||||
id uuid DEFAULT gen_random_uuid() NOT NULL,
|
||||
template_version_id uuid NOT NULL,
|
||||
name text NOT NULL,
|
||||
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE template_version_presets
|
||||
ALTER COLUMN id DROP DEFAULT;
|
||||
|
||||
ALTER TABLE template_version_preset_parameters
|
||||
ALTER COLUMN id DROP DEFAULT;
|
||||
@@ -0,0 +1,5 @@
|
||||
ALTER TABLE template_version_presets
|
||||
ALTER COLUMN id SET DEFAULT gen_random_uuid();
|
||||
|
||||
ALTER TABLE template_version_preset_parameters
|
||||
ALTER COLUMN id SET DEFAULT gen_random_uuid();
|
||||
@@ -5494,25 +5494,19 @@ func (q *sqlQuerier) GetPresetsByTemplateVersionID(ctx context.Context, template
|
||||
|
||||
const insertPreset = `-- name: InsertPreset :one
|
||||
INSERT INTO
|
||||
template_version_presets (id, template_version_id, name, created_at)
|
||||
template_version_presets (template_version_id, name, created_at)
|
||||
VALUES
|
||||
($1, $2, $3, $4) RETURNING id, template_version_id, name, created_at
|
||||
($1, $2, $3) RETURNING id, template_version_id, name, created_at
|
||||
`
|
||||
|
||||
type InsertPresetParams struct {
|
||||
ID uuid.UUID `db:"id" json:"id"`
|
||||
TemplateVersionID uuid.UUID `db:"template_version_id" json:"template_version_id"`
|
||||
Name string `db:"name" json:"name"`
|
||||
CreatedAt time.Time `db:"created_at" json:"created_at"`
|
||||
}
|
||||
|
||||
func (q *sqlQuerier) InsertPreset(ctx context.Context, arg InsertPresetParams) (TemplateVersionPreset, error) {
|
||||
row := q.db.QueryRowContext(ctx, insertPreset,
|
||||
arg.ID,
|
||||
arg.TemplateVersionID,
|
||||
arg.Name,
|
||||
arg.CreatedAt,
|
||||
)
|
||||
row := q.db.QueryRowContext(ctx, insertPreset, arg.TemplateVersionID, arg.Name, arg.CreatedAt)
|
||||
var i TemplateVersionPreset
|
||||
err := row.Scan(
|
||||
&i.ID,
|
||||
@@ -5525,29 +5519,22 @@ func (q *sqlQuerier) InsertPreset(ctx context.Context, arg InsertPresetParams) (
|
||||
|
||||
const insertPresetParameters = `-- name: InsertPresetParameters :many
|
||||
INSERT INTO
|
||||
template_version_preset_parameters (id, template_version_preset_id, name, value)
|
||||
template_version_preset_parameters (template_version_preset_id, name, value)
|
||||
SELECT
|
||||
$1,
|
||||
$2,
|
||||
unnest($3 :: TEXT[]),
|
||||
unnest($4 :: TEXT[])
|
||||
unnest($2 :: TEXT[]),
|
||||
unnest($3 :: TEXT[])
|
||||
RETURNING id, template_version_preset_id, name, value
|
||||
`
|
||||
|
||||
type InsertPresetParametersParams struct {
|
||||
ID uuid.UUID `db:"id" json:"id"`
|
||||
TemplateVersionPresetID uuid.UUID `db:"template_version_preset_id" json:"template_version_preset_id"`
|
||||
Names []string `db:"names" json:"names"`
|
||||
Values []string `db:"values" json:"values"`
|
||||
}
|
||||
|
||||
func (q *sqlQuerier) InsertPresetParameters(ctx context.Context, arg InsertPresetParametersParams) ([]TemplateVersionPresetParameter, error) {
|
||||
rows, err := q.db.QueryContext(ctx, insertPresetParameters,
|
||||
arg.ID,
|
||||
arg.TemplateVersionPresetID,
|
||||
pq.Array(arg.Names),
|
||||
pq.Array(arg.Values),
|
||||
)
|
||||
rows, err := q.db.QueryContext(ctx, insertPresetParameters, arg.TemplateVersionPresetID, pq.Array(arg.Names), pq.Array(arg.Values))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
@@ -1,14 +1,13 @@
|
||||
-- name: InsertPreset :one
|
||||
INSERT INTO
|
||||
template_version_presets (id, template_version_id, name, created_at)
|
||||
template_version_presets (template_version_id, name, created_at)
|
||||
VALUES
|
||||
(@id, @template_version_id, @name, @created_at) RETURNING *;
|
||||
(@template_version_id, @name, @created_at) RETURNING *;
|
||||
|
||||
-- name: InsertPresetParameters :many
|
||||
INSERT INTO
|
||||
template_version_preset_parameters (id, template_version_preset_id, name, value)
|
||||
template_version_preset_parameters (template_version_preset_id, name, value)
|
||||
SELECT
|
||||
@id,
|
||||
@template_version_preset_id,
|
||||
unnest(@names :: TEXT[]),
|
||||
unnest(@values :: TEXT[])
|
||||
|
||||
Reference in New Issue
Block a user