diff --git a/internal/configversion/config_uploader.go b/internal/configversion/config_uploader.go index 9b88f87c5..1b5b6e569 100644 --- a/internal/configversion/config_uploader.go +++ b/internal/configversion/config_uploader.go @@ -4,7 +4,6 @@ import ( "context" "github.com/leg100/otf/internal/resource" - "github.com/leg100/otf/internal/sql" "github.com/leg100/otf/internal/sql/sqlc" ) @@ -22,7 +21,7 @@ func newConfigUploader(q *sqlc.Queries, id resource.ID) *cvUploader { func (u *cvUploader) SetErrored(ctx context.Context) error { // TODO: add status timestamp - _, err := u.q.UpdateConfigurationVersionErroredByID(ctx, sql.ID(u.id)) + _, err := u.q.UpdateConfigurationVersionErroredByID(ctx, u.id) if err != nil { return err } @@ -32,7 +31,7 @@ func (u *cvUploader) SetErrored(ctx context.Context) error { func (u *cvUploader) Upload(ctx context.Context, config []byte) (ConfigurationStatus, error) { // TODO: add status timestamp _, err := u.q.UpdateConfigurationVersionConfigByID(ctx, sqlc.UpdateConfigurationVersionConfigByIDParams{ - ID: sql.ID(u.id), + ID: u.id, Config: config, }) if err != nil { diff --git a/internal/configversion/db.go b/internal/configversion/db.go index 51c0d649a..0feb637b3 100644 --- a/internal/configversion/db.go +++ b/internal/configversion/db.go @@ -18,13 +18,13 @@ type pgdb struct { func (db *pgdb) CreateConfigurationVersion(ctx context.Context, cv *ConfigurationVersion) error { return db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { err := q.InsertConfigurationVersion(ctx, sqlc.InsertConfigurationVersionParams{ - ID: sql.ID(cv.ID), + ID: cv.ID, CreatedAt: sql.Timestamptz(cv.CreatedAt), AutoQueueRuns: sql.Bool(cv.AutoQueueRuns), Source: sql.String(string(cv.Source)), Speculative: sql.Bool(cv.Speculative), Status: sql.String(string(cv.Status)), - WorkspaceID: sql.ID(cv.WorkspaceID), + WorkspaceID: cv.WorkspaceID, }) if err != nil { return err @@ -46,7 +46,7 @@ func (db *pgdb) CreateConfigurationVersion(ctx context.Context, cv *Configuratio Identifier: sql.String(ia.Repo), IsPullRequest: sql.Bool(ia.IsPullRequest), OnDefaultBranch: sql.Bool(ia.OnDefaultBranch), - ConfigurationVersionID: sql.ID(cv.ID), + ConfigurationVersionID: cv.ID, }) if err != nil { return err @@ -64,7 +64,7 @@ func (db *pgdb) CreateConfigurationVersion(ctx context.Context, cv *Configuratio func (db *pgdb) UploadConfigurationVersion(ctx context.Context, id resource.ID, fn func(*ConfigurationVersion, ConfigUploader) error) error { return db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { // select ...for update - result, err := q.FindConfigurationVersionByIDForUpdate(ctx, sql.ID(id)) + result, err := q.FindConfigurationVersionByIDForUpdate(ctx, id) if err != nil { return err } @@ -80,14 +80,14 @@ func (db *pgdb) UploadConfigurationVersion(ctx context.Context, id resource.ID, func (db *pgdb) ListConfigurationVersions(ctx context.Context, workspaceID resource.ID, opts ListOptions) (*resource.Page[*ConfigurationVersion], error) { q := db.Querier(ctx) rows, err := q.FindConfigurationVersionsByWorkspaceID(ctx, sqlc.FindConfigurationVersionsByWorkspaceIDParams{ - WorkspaceID: sql.ID(workspaceID), + WorkspaceID: workspaceID, Limit: sql.GetLimit(opts.PageOptions), Offset: sql.GetOffset(opts.PageOptions), }) if err != nil { return nil, err } - count, err := q.CountConfigurationVersionsByWorkspaceID(ctx, sql.ID(workspaceID)) + count, err := q.CountConfigurationVersionsByWorkspaceID(ctx, workspaceID) if err != nil { return nil, err } @@ -102,13 +102,13 @@ func (db *pgdb) ListConfigurationVersions(ctx context.Context, workspaceID resou func (db *pgdb) GetConfigurationVersion(ctx context.Context, opts ConfigurationVersionGetOptions) (*ConfigurationVersion, error) { q := db.Querier(ctx) if opts.ID != nil { - result, err := q.FindConfigurationVersionByID(ctx, sql.ID(*opts.ID)) + result, err := q.FindConfigurationVersionByID(ctx, *opts.ID) if err != nil { return nil, sql.Error(err) } return pgRow(result).toConfigVersion(), nil } else if opts.WorkspaceID != nil { - result, err := q.FindConfigurationVersionLatestByWorkspaceID(ctx, sql.ID(*opts.WorkspaceID)) + result, err := q.FindConfigurationVersionLatestByWorkspaceID(ctx, *opts.WorkspaceID) if err != nil { return nil, sql.Error(err) } @@ -119,7 +119,7 @@ func (db *pgdb) GetConfigurationVersion(ctx context.Context, opts ConfigurationV } func (db *pgdb) GetConfig(ctx context.Context, id resource.ID) ([]byte, error) { - cfg, err := db.Querier(ctx).DownloadConfigurationVersion(ctx, sql.ID(id)) + cfg, err := db.Querier(ctx).DownloadConfigurationVersion(ctx, id) if err != nil { return nil, sql.Error(err) } @@ -127,7 +127,7 @@ func (db *pgdb) GetConfig(ctx context.Context, id resource.ID) ([]byte, error) { } func (db *pgdb) DeleteConfigurationVersion(ctx context.Context, id resource.ID) error { - _, err := db.Querier(ctx).DeleteConfigurationVersionByID(ctx, sql.ID(id)) + _, err := db.Querier(ctx).DeleteConfigurationVersionByID(ctx, id) if err != nil { return sql.Error(err) } @@ -140,7 +140,7 @@ func (db *pgdb) insertCVStatusTimestamp(ctx context.Context, cv *ConfigurationVe return err } _, err = db.Querier(ctx).InsertConfigurationVersionStatusTimestamp(ctx, sqlc.InsertConfigurationVersionStatusTimestampParams{ - ID: sql.ID(cv.ID), + ID: cv.ID, Status: sql.String(string(cv.Status)), Timestamp: sql.Timestamptz(sts), }) @@ -149,27 +149,27 @@ func (db *pgdb) insertCVStatusTimestamp(ctx context.Context, cv *ConfigurationVe // pgRow represents the result of a database query for a configuration version. type pgRow struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID StatusTimestamps []sqlc.ConfigurationVersionStatusTimestamp IngressAttributes *sqlc.IngressAttribute } func (result pgRow) toConfigVersion() *ConfigurationVersion { cv := ConfigurationVersion{ - ID: resource.ID{Kind: ConfigVersionKind, ID: result.ConfigurationVersionID.String}, + ID: result.ConfigurationVersionID, CreatedAt: result.CreatedAt.Time.UTC(), AutoQueueRuns: result.AutoQueueRuns.Bool, Speculative: result.Speculative.Bool, Source: Source(result.Source.String), Status: ConfigurationStatus(result.Status.String), StatusTimestamps: unmarshalStatusTimestampRows(result.StatusTimestamps), - WorkspaceID: resource.ID{Kind: ConfigVersionKind, ID: result.WorkspaceID.String}, + WorkspaceID: result.WorkspaceID, } if result.IngressAttributes != nil { cv.IngressAttributes = NewIngressFromRow(result.IngressAttributes) diff --git a/internal/organization/db.go b/internal/organization/db.go index 936a13728..e6b4191b8 100644 --- a/internal/organization/db.go +++ b/internal/organization/db.go @@ -21,7 +21,7 @@ type ( // row is the row result of a database query for organizations type row struct { - OrganizationID pgtype.Text + OrganizationID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -37,7 +37,7 @@ type row struct { // organization. func (r row) toOrganization() *Organization { org := &Organization{ - ID: resource.ParseID(r.OrganizationID.String), + ID: r.OrganizationID, CreatedAt: r.CreatedAt.Time.UTC(), UpdatedAt: r.UpdatedAt.Time.UTC(), Name: r.Name.String, @@ -68,7 +68,7 @@ type pgdb struct { func (db *pgdb) create(ctx context.Context, org *Organization) error { err := db.Querier(ctx).InsertOrganization(ctx, sqlc.InsertOrganizationParams{ - ID: sql.ID(org.ID), + ID: org.ID, CreatedAt: sql.Timestamptz(org.CreatedAt), UpdatedAt: sql.Timestamptz(org.UpdatedAt), Name: sql.String(org.Name), @@ -151,7 +151,7 @@ func (db *pgdb) get(ctx context.Context, name string) (*Organization, error) { } func (db *pgdb) getByID(ctx context.Context, id resource.ID) (*Organization, error) { - r, err := db.Querier(ctx).FindOrganizationByID(ctx, sql.ID(id)) + r, err := db.Querier(ctx).FindOrganizationByID(ctx, id) if err != nil { return nil, sql.Error(err) } @@ -172,7 +172,7 @@ func (db *pgdb) delete(ctx context.Context, name string) error { // tokenRow is the row result of a database query for organization tokens type tokenRow struct { - OrganizationTokenID pgtype.Text `json:"organization_token_id"` + OrganizationTokenID resource.ID `json:"organization_token_id"` CreatedAt pgtype.Timestamptz `json:"created_at"` OrganizationName pgtype.Text `json:"organization_name"` Expiry pgtype.Timestamptz `json:"expiry"` @@ -180,10 +180,7 @@ type tokenRow struct { func (result tokenRow) toToken() *OrganizationToken { ot := &OrganizationToken{ - ID: resource.ID{ - Kind: resource.OrganizationTokenKind, - ID: result.OrganizationTokenID.String, - }, + ID: result.OrganizationTokenID, CreatedAt: result.CreatedAt.Time.UTC(), Organization: result.OrganizationName.String, } @@ -195,7 +192,7 @@ func (result tokenRow) toToken() *OrganizationToken { func (db *pgdb) upsertOrganizationToken(ctx context.Context, token *OrganizationToken) error { err := db.Querier(ctx).UpsertOrganizationToken(ctx, sqlc.UpsertOrganizationTokenParams{ - OrganizationTokenID: sql.ID(token.ID), + OrganizationTokenID: token.ID, OrganizationName: sql.String(token.Organization), CreatedAt: sql.Timestamptz(token.CreatedAt), Expiry: sql.TimestamptzPtr(token.Expiry), @@ -224,7 +221,7 @@ func (db *pgdb) listOrganizationTokens(ctx context.Context, organization string) } func (db *pgdb) getOrganizationTokenByID(ctx context.Context, tokenID resource.ID) (*OrganizationToken, error) { - result, err := db.Querier(ctx).FindOrganizationTokensByID(ctx, sql.ID(tokenID)) + result, err := db.Querier(ctx).FindOrganizationTokensByID(ctx, tokenID) if err != nil { return nil, sql.Error(err) } diff --git a/internal/resource/id.go b/internal/resource/id.go index 9694f63d7..cd2f5340e 100644 --- a/internal/resource/id.go +++ b/internal/resource/id.go @@ -1,6 +1,7 @@ package resource import ( + "database/sql/driver" "fmt" "math/rand" "regexp" @@ -64,6 +65,21 @@ func (id *ID) UnmarshalText(text []byte) error { return nil } +func (id *ID) Scan(text any) error { + s, ok := text.(string) + if !ok { + return fmt.Errorf("expected database value to be a string: %#v", text) + } + // string also makes a copy which is necessary in order to retain the data + // after returning + *id = ParseID(s) + return nil +} + +func (id ID) Value() (driver.Value, error) { + return id.String(), nil +} + // GetID allows the user of an interface to retrieve the ID. func (id ID) GetID() ID { return id diff --git a/internal/run/db.go b/internal/run/db.go index 81a7ff23a..85d4c4046 100644 --- a/internal/run/db.go +++ b/internal/run/db.go @@ -23,7 +23,7 @@ type ( // pgresult is the result of a database query for a run. pgresult struct { - RunID pgtype.Text + RunID resource.ID CreatedAt pgtype.Timestamptz CancelSignaledAt pgtype.Timestamptz IsDestroy pgtype.Bool @@ -40,8 +40,8 @@ type ( PlanResourceReport *sqlc.Report PlanOutputReport *sqlc.Report ApplyResourceReport *sqlc.Report - ConfigurationVersionID pgtype.Text - WorkspaceID pgtype.Text + ConfigurationVersionID resource.ID + WorkspaceID resource.ID PlanOnly pgtype.Bool CreatedBy pgtype.Text TerraformVersion pgtype.Text @@ -60,7 +60,7 @@ type ( func (result pgresult) toRun() *Run { run := Run{ - ID: resource.ParseID(result.RunID.String), + ID: result.RunID, CreatedAt: result.CreatedAt.Time.UTC(), IsDestroy: result.IsDestroy.Bool, PositionInQueue: int(result.PositionInQueue.Int32), @@ -77,18 +77,18 @@ func (result pgresult) toRun() *Run { ExecutionMode: workspace.ExecutionMode(result.ExecutionMode.String), Latest: result.Latest.Bool, Organization: result.OrganizationName.String, - WorkspaceID: resource.ParseID(result.WorkspaceID.String), - ConfigurationVersionID: resource.ParseID(result.ConfigurationVersionID.String), + WorkspaceID: result.WorkspaceID, + ConfigurationVersionID: result.ConfigurationVersionID, CostEstimationEnabled: result.CostEstimationEnabled.Bool, Plan: Phase{ - RunID: resource.ParseID(result.RunID.String), + RunID: result.RunID, PhaseType: internal.PlanPhase, Status: PhaseStatus(result.PlanStatus.String), ResourceReport: reportFromDB(result.PlanResourceReport), OutputReport: reportFromDB(result.PlanOutputReport), }, Apply: Phase{ - RunID: resource.ParseID(result.RunID.String), + RunID: result.RunID, PhaseType: internal.ApplyPhase, Status: PhaseStatus(result.ApplyStatus.String), ResourceReport: reportFromDB(result.ApplyResourceReport), @@ -152,7 +152,7 @@ func (result pgresult) toRun() *Run { func (db *pgdb) CreateRun(ctx context.Context, run *Run) error { return db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { err := q.InsertRun(ctx, sqlc.InsertRunParams{ - ID: sql.ID(run.ID), + ID: run.ID, CreatedAt: sql.Timestamptz(run.CreatedAt), IsDestroy: sql.Bool(run.IsDestroy), PositionInQueue: sql.Int4(0), @@ -166,13 +166,13 @@ func (db *pgdb) CreateRun(ctx context.Context, run *Run) error { PlanOnly: sql.Bool(run.PlanOnly), AllowEmptyApply: sql.Bool(run.AllowEmptyApply), TerraformVersion: sql.String(run.TerraformVersion), - ConfigurationVersionID: sql.ID(run.ConfigurationVersionID), - WorkspaceID: sql.ID(run.WorkspaceID), + ConfigurationVersionID: run.ConfigurationVersionID, + WorkspaceID: run.WorkspaceID, CreatedBy: sql.StringPtr(run.CreatedBy), }) for _, v := range run.Variables { err = q.InsertRunVariable(ctx, sqlc.InsertRunVariableParams{ - RunID: sql.ID(run.ID), + RunID: run.ID, Key: sql.String(v.Key), Value: sql.String(v.Value), }) @@ -184,14 +184,14 @@ func (db *pgdb) CreateRun(ctx context.Context, run *Run) error { return fmt.Errorf("inserting run: %w", err) } err = q.InsertPlan(ctx, sqlc.InsertPlanParams{ - RunID: sql.ID(run.ID), + RunID: run.ID, Status: sql.String(string(run.Plan.Status)), }) if err != nil { return fmt.Errorf("inserting plan: %w", err) } err = q.InsertApply(ctx, sqlc.InsertApplyParams{ - RunID: sql.ID(run.ID), + RunID: run.ID, Status: sql.String(string(run.Apply.Status)), }) if err != nil { @@ -215,7 +215,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru var run *Run err := db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { // select ...for update - result, err := q.FindRunByIDForUpdate(ctx, sql.ID(runID)) + result, err := q.FindRunByIDForUpdate(ctx, runID) if err != nil { return sql.Error(err) } @@ -234,7 +234,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru if run.Status != runStatus { _, err := q.UpdateRunStatus(ctx, sqlc.UpdateRunStatusParams{ Status: sql.String(string(run.Status)), - ID: sql.ID(run.ID), + ID: run.ID, }) if err != nil { return err @@ -248,7 +248,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru if run.Plan.Status != planStatus { _, err := q.UpdatePlanStatusByID(ctx, sqlc.UpdatePlanStatusByIDParams{ Status: sql.String(string(run.Plan.Status)), - RunID: sql.ID(run.ID), + RunID: run.ID, }) if err != nil { return err @@ -262,7 +262,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru if run.Apply.Status != applyStatus { _, err := q.UpdateApplyStatusByID(ctx, sqlc.UpdateApplyStatusByIDParams{ Status: sql.String(string(run.Apply.Status)), - RunID: sql.ID(run.ID), + RunID: run.ID, }) if err != nil { return err @@ -276,7 +276,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru if run.CancelSignaledAt != cancelSignaledAt && run.CancelSignaledAt != nil { _, err := q.UpdateCancelSignaledAt(ctx, sqlc.UpdateCancelSignaledAtParams{ CancelSignaledAt: sql.Timestamptz(*run.CancelSignaledAt), - ID: sql.ID(run.ID), + ID: run.ID, }) if err != nil { return err @@ -290,7 +290,7 @@ func (db *pgdb) UpdateStatus(ctx context.Context, runID resource.ID, fn func(*Ru func (db *pgdb) CreatePlanReport(ctx context.Context, runID resource.ID, resource, output Report) error { _, err := db.Querier(ctx).UpdatePlannedChangesByID(ctx, sqlc.UpdatePlannedChangesByIDParams{ - RunID: sql.ID(runID), + RunID: runID, ResourceAdditions: sql.Int4(resource.Additions), ResourceChanges: sql.Int4(resource.Changes), ResourceDestructions: sql.Int4(resource.Destructions), @@ -306,7 +306,7 @@ func (db *pgdb) CreatePlanReport(ctx context.Context, runID resource.ID, resourc func (db *pgdb) CreateApplyReport(ctx context.Context, runID resource.ID, report Report) error { _, err := db.Querier(ctx).UpdateAppliedChangesByID(ctx, sqlc.UpdateAppliedChangesByIDParams{ - RunID: sql.ID(runID), + RunID: runID, Additions: sql.Int4(report.Additions), Changes: sql.Int4(report.Changes), Destructions: sql.Int4(report.Destructions), @@ -382,7 +382,7 @@ func (db *pgdb) ListRuns(ctx context.Context, opts ListOptions) (*resource.Page[ // GetRun retrieves a run using the get options func (db *pgdb) GetRun(ctx context.Context, runID resource.ID) (*Run, error) { - result, err := db.Querier(ctx).FindRunByID(ctx, sql.ID(runID)) + result, err := db.Querier(ctx).FindRunByID(ctx, runID) if err != nil { return nil, sql.Error(err) } @@ -396,13 +396,13 @@ func (db *pgdb) SetPlanFile(ctx context.Context, runID resource.ID, file []byte, case PlanFormatBinary: _, err := q.UpdatePlanBinByID(ctx, sqlc.UpdatePlanBinByIDParams{ PlanBin: file, - RunID: sql.ID(runID), + RunID: runID, }) return err case PlanFormatJSON: _, err := q.UpdatePlanJSONByID(ctx, sqlc.UpdatePlanJSONByIDParams{ PlanJSON: file, - RunID: sql.ID(runID), + RunID: runID, }) return err default: @@ -415,9 +415,9 @@ func (db *pgdb) GetPlanFile(ctx context.Context, runID resource.ID, format PlanF q := db.Querier(ctx) switch format { case PlanFormatBinary: - return q.GetPlanBinByID(ctx, sql.ID(runID)) + return q.GetPlanBinByID(ctx, runID) case PlanFormatJSON: - return q.GetPlanJSONByID(ctx, sql.ID(runID)) + return q.GetPlanJSONByID(ctx, runID) default: return nil, fmt.Errorf("unknown plan format: %s", string(format)) } @@ -425,21 +425,21 @@ func (db *pgdb) GetPlanFile(ctx context.Context, runID resource.ID, format PlanF // GetLockFile retrieves the lock file for the run func (db *pgdb) GetLockFile(ctx context.Context, runID resource.ID) ([]byte, error) { - return db.Querier(ctx).GetLockFileByID(ctx, sql.ID(runID)) + return db.Querier(ctx).GetLockFileByID(ctx, runID) } // SetLockFile sets the lock file for the run func (db *pgdb) SetLockFile(ctx context.Context, runID resource.ID, lockFile []byte) error { _, err := db.Querier(ctx).PutLockFile(ctx, sqlc.PutLockFileParams{ LockFile: lockFile, - RunID: sql.ID(runID), + RunID: runID, }) return err } // DeleteRun deletes a run from the DB func (db *pgdb) DeleteRun(ctx context.Context, id resource.ID) error { - _, err := db.Querier(ctx).DeleteRunByID(ctx, sql.ID(id)) + _, err := db.Querier(ctx).DeleteRunByID(ctx, id) return err } @@ -449,7 +449,7 @@ func (db *pgdb) insertRunStatusTimestamp(ctx context.Context, run *Run) error { return err } err = db.Querier(ctx).InsertRunStatusTimestamp(ctx, sqlc.InsertRunStatusTimestampParams{ - ID: sql.ID(run.ID), + ID: run.ID, Status: sql.String(string(run.Status)), Timestamp: sql.Timestamptz(ts), }) @@ -462,7 +462,7 @@ func (db *pgdb) insertPhaseStatusTimestamp(ctx context.Context, phase Phase) err return err } err = db.Querier(ctx).InsertPhaseStatusTimestamp(ctx, sqlc.InsertPhaseStatusTimestampParams{ - RunID: sql.ID(phase.RunID), + RunID: phase.RunID, Phase: sql.String(string(phase.PhaseType)), Status: sql.String(string(phase.Status)), Timestamp: sql.Timestamptz(ts), diff --git a/internal/runner/db.go b/internal/runner/db.go index 5b2e069b3..453ee8812 100644 --- a/internal/runner/db.go +++ b/internal/runner/db.go @@ -18,7 +18,7 @@ type db struct { // runners type runnerMetaResult struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -26,14 +26,14 @@ type runnerMetaResult struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *sqlc.AgentPool CurrentJobs int64 } func (r runnerMetaResult) toRunnerMeta() *RunnerMeta { meta := &RunnerMeta{ - ID: resource.ParseID(r.RunnerID.String), + ID: r.RunnerID, Name: r.Name.String, Version: r.Version.String, MaxJobs: int(r.MaxJobs.Int32), @@ -45,7 +45,7 @@ func (r runnerMetaResult) toRunnerMeta() *RunnerMeta { } if r.AgentPool != nil { meta.AgentPool = &RunnerMetaAgentPool{ - ID: resource.ParseID(r.AgentPool.AgentPoolID.String), + ID: r.AgentPool.AgentPoolID, Name: r.AgentPool.Name.String, OrganizationName: r.AgentPool.OrganizationName.String, } @@ -55,7 +55,7 @@ func (r runnerMetaResult) toRunnerMeta() *RunnerMeta { func (db *db) create(ctx context.Context, meta *RunnerMeta) error { params := sqlc.InsertRunnerParams{ - RunnerID: sql.ID(meta.ID), + RunnerID: meta.ID, Name: sql.String(meta.Name), Version: sql.String(meta.Version), MaxJobs: sql.Int4(meta.MaxJobs), @@ -65,16 +65,14 @@ func (db *db) create(ctx context.Context, meta *RunnerMeta) error { LastStatusAt: sql.Timestamptz(meta.LastStatusAt), } if meta.AgentPool != nil { - params.AgentPoolID = sql.ID(meta.AgentPool.ID) - } else { - params.AgentPoolID = sql.NullString() + params.AgentPoolID = &meta.AgentPool.ID } return db.Querier(ctx).InsertRunner(ctx, params) } -func (db *db) update(ctx context.Context, agentID resource.ID, fn func(*RunnerMeta) error) error { +func (db *db) update(ctx context.Context, runnerID resource.ID, fn func(*RunnerMeta) error) error { err := db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { - result, err := q.FindRunnerByIDForUpdate(ctx, sql.ID(agentID)) + result, err := q.FindRunnerByIDForUpdate(ctx, runnerID) if err != nil { return err } @@ -83,7 +81,7 @@ func (db *db) update(ctx context.Context, agentID resource.ID, fn func(*RunnerMe return err } _, err = q.UpdateRunner(ctx, sqlc.UpdateRunnerParams{ - RunnerID: sql.ID(agent.ID), + RunnerID: agent.ID, Status: sql.String(string(agent.Status)), LastPingAt: sql.Timestamptz(agent.LastPingAt), LastStatusAt: sql.Timestamptz(agent.LastStatusAt), @@ -96,8 +94,8 @@ func (db *db) update(ctx context.Context, agentID resource.ID, fn func(*RunnerMe return nil } -func (db *db) get(ctx context.Context, agentID resource.ID) (*RunnerMeta, error) { - result, err := db.Querier(ctx).FindRunnerByID(ctx, sql.ID(agentID)) +func (db *db) get(ctx context.Context, runnerID resource.ID) (*RunnerMeta, error) { + result, err := db.Querier(ctx).FindRunnerByID(ctx, runnerID) if err != nil { return nil, sql.Error(err) } @@ -141,7 +139,7 @@ func (db *db) listRunnersByOrganization(ctx context.Context, organization string } func (db *db) listRunnersByPool(ctx context.Context, poolID resource.ID) ([]*RunnerMeta, error) { - rows, err := db.Querier(ctx).FindRunnersByPoolID(ctx, sql.ID(poolID)) + rows, err := db.Querier(ctx).FindRunnersByPoolID(ctx, poolID) if err != nil { return nil, sql.Error(err) } @@ -152,8 +150,8 @@ func (db *db) listRunnersByPool(ctx context.Context, poolID resource.ID) ([]*Run return runners, nil } -func (db *db) deleteRunner(ctx context.Context, agentID resource.ID) error { - _, err := db.Querier(ctx).DeleteRunner(ctx, sql.ID(agentID)) +func (db *db) deleteRunner(ctx context.Context, runnerID resource.ID) error { + _, err := db.Querier(ctx).DeleteRunner(ctx, runnerID) return sql.Error(err) } @@ -359,7 +357,7 @@ func (db *db) deleteAgentToken(ctx context.Context, id resource.ID) error { // agent pools type poolresult struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -370,7 +368,7 @@ type poolresult struct { func (r poolresult) toPool() *Pool { pool := &Pool{ - ID: resource.ParseID(r.AgentPoolID.String), + ID: r.AgentPoolID, Name: r.Name.String, CreatedAt: r.CreatedAt.Time.UTC(), Organization: r.OrganizationName.String, @@ -390,7 +388,7 @@ func (r poolresult) toPool() *Pool { func (db *db) createPool(ctx context.Context, pool *Pool) error { err := db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { err := db.Querier(ctx).InsertAgentPool(ctx, sqlc.InsertAgentPoolParams{ - AgentPoolID: sql.ID(pool.ID), + AgentPoolID: pool.ID, Name: sql.String(pool.Name), CreatedAt: sql.Timestamptz(pool.CreatedAt), OrganizationName: sql.String(pool.Organization), @@ -418,7 +416,7 @@ func (db *db) createPool(ctx context.Context, pool *Pool) error { func (db *db) updatePool(ctx context.Context, pool *Pool) error { _, err := db.Querier(ctx).UpdateAgentPool(ctx, sqlc.UpdateAgentPoolParams{ - PoolID: sql.ID(pool.ID), + PoolID: pool.ID, Name: sql.String(pool.Name), OrganizationScoped: sql.Bool(pool.OrganizationScoped), }) @@ -451,7 +449,7 @@ func (db *db) deleteAgentPoolAllowedWorkspace(ctx context.Context, poolID, works } func (db *db) getPool(ctx context.Context, poolID resource.ID) (*Pool, error) { - result, err := db.Querier(ctx).FindAgentPool(ctx, sql.ID(poolID)) + result, err := db.Querier(ctx).FindAgentPool(ctx, poolID) if err != nil { return nil, sql.Error(err) } @@ -484,7 +482,7 @@ func (db *db) listPoolsByOrganization(ctx context.Context, organization string, } func (db *db) deleteAgentPool(ctx context.Context, poolID resource.ID) error { - _, err := db.Querier(ctx).DeleteAgentPool(ctx, sql.ID(poolID)) + _, err := db.Querier(ctx).DeleteAgentPool(ctx, poolID) if err != nil { return sql.Error(err) } diff --git a/internal/sql/generate_types.go b/internal/sql/generate_types.go index 3eed30d2d..c00eb1e32 100644 --- a/internal/sql/generate_types.go +++ b/internal/sql/generate_types.go @@ -55,6 +55,10 @@ func main() { } var types []string for _, override := range cfg.SQL[0].Gen.Go.Overrides { + // Ignore overrides that don't specify a database type. + if override.DbType == "" { + continue + } // Ignore overrides of built-in types like int, bool, etc. if slices.Contains(ignoreBuiltinTypes, override.DbType) { continue diff --git a/internal/sql/sqlc/agent_pool.sql.go b/internal/sql/sqlc/agent_pool.sql.go index ba61bac0d..246deecd0 100644 --- a/internal/sql/sqlc/agent_pool.sql.go +++ b/internal/sql/sqlc/agent_pool.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteAgentPool = `-- name: DeleteAgentPool :one @@ -18,7 +19,7 @@ WHERE agent_pool_id = $1 RETURNING agent_pool_id, name, created_at, organization_name, organization_scoped ` -func (q *Queries) DeleteAgentPool(ctx context.Context, poolID pgtype.Text) (AgentPool, error) { +func (q *Queries) DeleteAgentPool(ctx context.Context, poolID resource.ID) (AgentPool, error) { row := q.db.QueryRow(ctx, deleteAgentPool, poolID) var i AgentPool err := row.Scan( @@ -39,8 +40,8 @@ AND workspace_id = $2 ` type DeleteAgentPoolAllowedWorkspaceParams struct { - PoolID pgtype.Text - WorkspaceID pgtype.Text + PoolID resource.ID + WorkspaceID resource.ID } func (q *Queries) DeleteAgentPoolAllowedWorkspace(ctx context.Context, arg DeleteAgentPoolAllowedWorkspaceParams) error { @@ -66,7 +67,7 @@ GROUP BY ap.agent_pool_id ` type FindAgentPoolRow struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -75,7 +76,7 @@ type FindAgentPoolRow struct { AllowedWorkspaceIds []pgtype.Text } -func (q *Queries) FindAgentPool(ctx context.Context, poolID pgtype.Text) (FindAgentPoolRow, error) { +func (q *Queries) FindAgentPool(ctx context.Context, poolID resource.ID) (FindAgentPoolRow, error) { row := q.db.QueryRow(ctx, findAgentPool, poolID) var i FindAgentPoolRow err := row.Scan( @@ -109,7 +110,7 @@ GROUP BY ap.agent_pool_id ` type FindAgentPoolByAgentTokenIDRow struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -118,7 +119,7 @@ type FindAgentPoolByAgentTokenIDRow struct { AllowedWorkspaceIds []pgtype.Text } -func (q *Queries) FindAgentPoolByAgentTokenID(ctx context.Context, agentTokenID pgtype.Text) (FindAgentPoolByAgentTokenIDRow, error) { +func (q *Queries) FindAgentPoolByAgentTokenID(ctx context.Context, agentTokenID resource.ID) (FindAgentPoolByAgentTokenIDRow, error) { row := q.db.QueryRow(ctx, findAgentPoolByAgentTokenID, agentTokenID) var i FindAgentPoolByAgentTokenIDRow err := row.Scan( @@ -150,7 +151,7 @@ ORDER BY ap.created_at DESC ` type FindAgentPoolsRow struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -223,7 +224,7 @@ type FindAgentPoolsByOrganizationParams struct { } type FindAgentPoolsByOrganizationRow struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -286,7 +287,7 @@ INSERT INTO agent_pools ( ` type InsertAgentPoolParams struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -315,8 +316,8 @@ INSERT INTO agent_pool_allowed_workspaces ( ` type InsertAgentPoolAllowedWorkspaceParams struct { - PoolID pgtype.Text - WorkspaceID pgtype.Text + PoolID resource.ID + WorkspaceID resource.ID } func (q *Queries) InsertAgentPoolAllowedWorkspace(ctx context.Context, arg InsertAgentPoolAllowedWorkspaceParams) error { @@ -335,7 +336,7 @@ RETURNING agent_pool_id, name, created_at, organization_name, organization_scope type UpdateAgentPoolParams struct { Name pgtype.Text OrganizationScoped pgtype.Bool - PoolID pgtype.Text + PoolID resource.ID } func (q *Queries) UpdateAgentPool(ctx context.Context, arg UpdateAgentPoolParams) (AgentPool, error) { diff --git a/internal/sql/sqlc/agent_token.sql.go b/internal/sql/sqlc/agent_token.sql.go index daf6d9670..acc38c8ae 100644 --- a/internal/sql/sqlc/agent_token.sql.go +++ b/internal/sql/sqlc/agent_token.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteAgentTokenByID = `-- name: DeleteAgentTokenByID :one @@ -18,9 +19,9 @@ WHERE agent_token_id = $1 RETURNING agent_token_id ` -func (q *Queries) DeleteAgentTokenByID(ctx context.Context, agentTokenID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteAgentTokenByID(ctx context.Context, agentTokenID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteAgentTokenByID, agentTokenID) - var agent_token_id pgtype.Text + var agent_token_id resource.ID err := row.Scan(&agent_token_id) return agent_token_id, err } @@ -31,7 +32,7 @@ FROM agent_tokens WHERE agent_token_id = $1 ` -func (q *Queries) FindAgentTokenByID(ctx context.Context, agentTokenID pgtype.Text) (AgentToken, error) { +func (q *Queries) FindAgentTokenByID(ctx context.Context, agentTokenID resource.ID) (AgentToken, error) { row := q.db.QueryRow(ctx, findAgentTokenByID, agentTokenID) var i AgentToken err := row.Scan( @@ -50,7 +51,7 @@ WHERE agent_pool_id = $1 ORDER BY created_at DESC ` -func (q *Queries) FindAgentTokensByAgentPoolID(ctx context.Context, agentPoolID pgtype.Text) ([]AgentToken, error) { +func (q *Queries) FindAgentTokensByAgentPoolID(ctx context.Context, agentPoolID resource.ID) ([]AgentToken, error) { rows, err := q.db.Query(ctx, findAgentTokensByAgentPoolID, agentPoolID) if err != nil { return nil, err @@ -90,10 +91,10 @@ INSERT INTO agent_tokens ( ` type InsertAgentTokenParams struct { - AgentTokenID pgtype.Text + AgentTokenID resource.ID CreatedAt pgtype.Timestamptz Description pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID resource.ID } func (q *Queries) InsertAgentToken(ctx context.Context, arg InsertAgentTokenParams) error { diff --git a/internal/sql/sqlc/apply.sql.go b/internal/sql/sqlc/apply.sql.go index 8bd0c59fc..c147238b8 100644 --- a/internal/sql/sqlc/apply.sql.go +++ b/internal/sql/sqlc/apply.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const insertApply = `-- name: InsertApply :exec @@ -22,7 +23,7 @@ INSERT INTO applies ( ` type InsertApplyParams struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text } @@ -43,20 +44,20 @@ RETURNING run_id ` type UpdateAppliedChangesByIDParams struct { - RunID pgtype.Text + RunID resource.ID Additions pgtype.Int4 Changes pgtype.Int4 Destructions pgtype.Int4 } -func (q *Queries) UpdateAppliedChangesByID(ctx context.Context, arg UpdateAppliedChangesByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateAppliedChangesByID(ctx context.Context, arg UpdateAppliedChangesByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateAppliedChangesByID, arg.RunID, arg.Additions, arg.Changes, arg.Destructions, ) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -69,13 +70,13 @@ RETURNING run_id ` type UpdateApplyStatusByIDParams struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text } -func (q *Queries) UpdateApplyStatusByID(ctx context.Context, arg UpdateApplyStatusByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateApplyStatusByID(ctx context.Context, arg UpdateApplyStatusByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateApplyStatusByID, arg.RunID, arg.Status) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } diff --git a/internal/sql/sqlc/configuration_version.sql.go b/internal/sql/sqlc/configuration_version.sql.go index 9e68f14a5..14b96bbc7 100644 --- a/internal/sql/sqlc/configuration_version.sql.go +++ b/internal/sql/sqlc/configuration_version.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countConfigurationVersionsByWorkspaceID = `-- name: CountConfigurationVersionsByWorkspaceID :one @@ -17,7 +18,7 @@ FROM configuration_versions WHERE configuration_versions.workspace_id = $1 ` -func (q *Queries) CountConfigurationVersionsByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) (int64, error) { +func (q *Queries) CountConfigurationVersionsByWorkspaceID(ctx context.Context, workspaceID resource.ID) (int64, error) { row := q.db.QueryRow(ctx, countConfigurationVersionsByWorkspaceID, workspaceID) var count int64 err := row.Scan(&count) @@ -31,9 +32,9 @@ WHERE configuration_version_id = $1 RETURNING configuration_version_id ` -func (q *Queries) DeleteConfigurationVersionByID(ctx context.Context, id pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteConfigurationVersionByID(ctx context.Context, id resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteConfigurationVersionByID, id) - var configuration_version_id pgtype.Text + var configuration_version_id resource.ID err := row.Scan(&configuration_version_id) return configuration_version_id, err } @@ -47,7 +48,7 @@ AND status = 'uploaded' // DownloadConfigurationVersion gets a configuration_version config // tarball. -func (q *Queries) DownloadConfigurationVersion(ctx context.Context, configurationVersionID pgtype.Text) ([]byte, error) { +func (q *Queries) DownloadConfigurationVersion(ctx context.Context, configurationVersionID resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, downloadConfigurationVersion, configurationVersionID) var config []byte err := row.Scan(&config) @@ -77,19 +78,19 @@ WHERE cv.configuration_version_id = $1 ` type FindConfigurationVersionByIDRow struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID StatusTimestamps []ConfigurationVersionStatusTimestamp IngressAttributes *IngressAttribute } // FindConfigurationVersionByID finds a configuration_version by its id. -func (q *Queries) FindConfigurationVersionByID(ctx context.Context, configurationVersionID pgtype.Text) (FindConfigurationVersionByIDRow, error) { +func (q *Queries) FindConfigurationVersionByID(ctx context.Context, configurationVersionID resource.ID) (FindConfigurationVersionByIDRow, error) { row := q.db.QueryRow(ctx, findConfigurationVersionByID, configurationVersionID) var i FindConfigurationVersionByIDRow err := row.Scan( @@ -130,18 +131,18 @@ FOR UPDATE OF cv ` type FindConfigurationVersionByIDForUpdateRow struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID StatusTimestamps []ConfigurationVersionStatusTimestamp IngressAttributes *IngressAttribute } -func (q *Queries) FindConfigurationVersionByIDForUpdate(ctx context.Context, configurationVersionID pgtype.Text) (FindConfigurationVersionByIDForUpdateRow, error) { +func (q *Queries) FindConfigurationVersionByIDForUpdate(ctx context.Context, configurationVersionID resource.ID) (FindConfigurationVersionByIDForUpdateRow, error) { row := q.db.QueryRow(ctx, findConfigurationVersionByIDForUpdate, configurationVersionID) var i FindConfigurationVersionByIDForUpdateRow err := row.Scan( @@ -182,18 +183,18 @@ ORDER BY cv.created_at DESC ` type FindConfigurationVersionLatestByWorkspaceIDRow struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID StatusTimestamps []ConfigurationVersionStatusTimestamp IngressAttributes *IngressAttribute } -func (q *Queries) FindConfigurationVersionLatestByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) (FindConfigurationVersionLatestByWorkspaceIDRow, error) { +func (q *Queries) FindConfigurationVersionLatestByWorkspaceID(ctx context.Context, workspaceID resource.ID) (FindConfigurationVersionLatestByWorkspaceIDRow, error) { row := q.db.QueryRow(ctx, findConfigurationVersionLatestByWorkspaceID, workspaceID) var i FindConfigurationVersionLatestByWorkspaceIDRow err := row.Scan( @@ -235,19 +236,19 @@ OFFSET $2::int ` type FindConfigurationVersionsByWorkspaceIDParams struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID Offset pgtype.Int4 Limit pgtype.Int4 } type FindConfigurationVersionsByWorkspaceIDRow struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID StatusTimestamps []ConfigurationVersionStatusTimestamp IngressAttributes *IngressAttribute } @@ -305,13 +306,13 @@ INSERT INTO configuration_versions ( ` type InsertConfigurationVersionParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID } func (q *Queries) InsertConfigurationVersion(ctx context.Context, arg InsertConfigurationVersionParams) error { @@ -341,7 +342,7 @@ RETURNING configuration_version_id, status, timestamp ` type InsertConfigurationVersionStatusTimestampParams struct { - ID pgtype.Text + ID resource.ID Status pgtype.Text Timestamp pgtype.Timestamptz } @@ -364,12 +365,12 @@ RETURNING configuration_version_id type UpdateConfigurationVersionConfigByIDParams struct { Config []byte - ID pgtype.Text + ID resource.ID } -func (q *Queries) UpdateConfigurationVersionConfigByID(ctx context.Context, arg UpdateConfigurationVersionConfigByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateConfigurationVersionConfigByID(ctx context.Context, arg UpdateConfigurationVersionConfigByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateConfigurationVersionConfigByID, arg.Config, arg.ID) - var configuration_version_id pgtype.Text + var configuration_version_id resource.ID err := row.Scan(&configuration_version_id) return configuration_version_id, err } @@ -382,9 +383,9 @@ WHERE configuration_version_id = $1 RETURNING configuration_version_id ` -func (q *Queries) UpdateConfigurationVersionErroredByID(ctx context.Context, id pgtype.Text) (pgtype.Text, error) { +func (q *Queries) UpdateConfigurationVersionErroredByID(ctx context.Context, id resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, updateConfigurationVersionErroredByID, id) - var configuration_version_id pgtype.Text + var configuration_version_id resource.ID err := row.Scan(&configuration_version_id) return configuration_version_id, err } diff --git a/internal/sql/sqlc/github_app.sql.go b/internal/sql/sqlc/github_app.sql.go index 4c0b0d7d6..4711c66ac 100644 --- a/internal/sql/sqlc/github_app.sql.go +++ b/internal/sql/sqlc/github_app.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteGithubApp = `-- name: DeleteGithubApp :one @@ -105,7 +106,7 @@ type InsertGithubAppInstallParams struct { InstallID pgtype.Int8 Username pgtype.Text Organization pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } func (q *Queries) InsertGithubAppInstall(ctx context.Context, arg InsertGithubAppInstallParams) error { diff --git a/internal/sql/sqlc/ingress_attributes.sql.go b/internal/sql/sqlc/ingress_attributes.sql.go index c117bb082..2fa7a8b7b 100644 --- a/internal/sql/sqlc/ingress_attributes.sql.go +++ b/internal/sql/sqlc/ingress_attributes.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const insertIngressAttributes = `-- name: InsertIngressAttributes :exec @@ -59,7 +60,7 @@ type InsertIngressAttributesParams struct { Tag pgtype.Text IsPullRequest pgtype.Bool OnDefaultBranch pgtype.Bool - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID } func (q *Queries) InsertIngressAttributes(ctx context.Context, arg InsertIngressAttributesParams) error { diff --git a/internal/sql/sqlc/job.sql.go b/internal/sql/sqlc/job.sql.go index 754bdb595..810ceabe5 100644 --- a/internal/sql/sqlc/job.sql.go +++ b/internal/sql/sqlc/job.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const findAllocatedJobs = `-- name: FindAllocatedJobs :many @@ -35,13 +36,13 @@ type FindAllocatedJobsRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } -func (q *Queries) FindAllocatedJobs(ctx context.Context, runnerID pgtype.Text) ([]FindAllocatedJobsRow, error) { +func (q *Queries) FindAllocatedJobs(ctx context.Context, runnerID *resource.ID) ([]FindAllocatedJobsRow, error) { rows, err := q.db.Query(ctx, findAllocatedJobs, runnerID) if err != nil { return nil, err @@ -98,14 +99,14 @@ type FindAndUpdateSignaledJobsRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } // Find signaled jobs and then immediately update signal with null. -func (q *Queries) FindAndUpdateSignaledJobs(ctx context.Context, runnerID pgtype.Text) ([]FindAndUpdateSignaledJobsRow, error) { +func (q *Queries) FindAndUpdateSignaledJobs(ctx context.Context, runnerID *resource.ID) ([]FindAndUpdateSignaledJobsRow, error) { rows, err := q.db.Query(ctx, findAndUpdateSignaledJobs, runnerID) if err != nil { return nil, err @@ -158,9 +159,9 @@ type FindJobRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } @@ -205,9 +206,9 @@ type FindJobForUpdateRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } @@ -258,9 +259,9 @@ type FindJobForUpdateByRunPhaseRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } @@ -303,9 +304,9 @@ type FindJobsRow struct { Phase pgtype.Text Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + RunnerID *resource.ID + AgentPoolID *resource.ID + WorkspaceID resource.ID OrganizationName pgtype.Text } @@ -382,7 +383,7 @@ RETURNING run_id, phase, status, runner_id, signaled, job_id type UpdateJobParams struct { Status pgtype.Text Signaled pgtype.Bool - RunnerID pgtype.Text + RunnerID *resource.ID JobID pgtype.Text } diff --git a/internal/sql/sqlc/models.go b/internal/sql/sqlc/models.go index f282503ad..a075b0143 100644 --- a/internal/sql/sqlc/models.go +++ b/internal/sql/sqlc/models.go @@ -8,10 +8,11 @@ import ( "net/netip" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) type AgentPool struct { - AgentPoolID pgtype.Text + AgentPoolID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -19,36 +20,36 @@ type AgentPool struct { } type AgentPoolAllowedWorkspace struct { - AgentPoolID pgtype.Text - WorkspaceID pgtype.Text + AgentPoolID resource.ID + WorkspaceID resource.ID } type AgentToken struct { - AgentTokenID pgtype.Text + AgentTokenID resource.ID CreatedAt pgtype.Timestamptz Description pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID resource.ID } type Apply struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text ResourceReport interface{} } type ConfigurationVersion struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CreatedAt pgtype.Timestamptz AutoQueueRuns pgtype.Bool Source pgtype.Text Speculative pgtype.Bool Status pgtype.Text Config []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID } type ConfigurationVersionStatusTimestamp struct { - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID Status pgtype.Text Timestamp pgtype.Timestamptz } @@ -70,7 +71,7 @@ type GithubAppInstall struct { InstallID pgtype.Int8 Username pgtype.Text Organization pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } type IngressAttribute struct { @@ -79,7 +80,7 @@ type IngressAttribute struct { Identifier pgtype.Text IsPullRequest pgtype.Bool OnDefaultBranch pgtype.Bool - ConfigurationVersionID pgtype.Text + ConfigurationVersionID resource.ID CommitURL pgtype.Text PullRequestNumber pgtype.Int4 PullRequestURL pgtype.Text @@ -94,7 +95,7 @@ type Job struct { RunID pgtype.Text Phase pgtype.Text Status pgtype.Text - RunnerID pgtype.Text + RunnerID *resource.ID Signaled pgtype.Bool JobID pgtype.Text } @@ -113,7 +114,7 @@ type LatestTerraformVersion struct { } type Log struct { - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text Chunk []byte Offset pgtype.Int4 @@ -121,7 +122,7 @@ type Log struct { } type Module struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -136,17 +137,17 @@ type ModuleStatus struct { type ModuleTarball struct { Tarball []byte - ModuleVersionID pgtype.Text + ModuleVersionID resource.ID } type ModuleVersion struct { - ModuleVersionID pgtype.Text + ModuleVersionID resource.ID Version pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Status pgtype.Text StatusError pgtype.Text - ModuleID pgtype.Text + ModuleID resource.ID } type ModuleVersionStatus struct { @@ -154,19 +155,19 @@ type ModuleVersionStatus struct { } type NotificationConfiguration struct { - NotificationConfigurationID pgtype.Text + NotificationConfigurationID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text URL pgtype.Text Triggers []pgtype.Text DestinationType pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID Enabled pgtype.Bool } type Organization struct { - OrganizationID pgtype.Text + OrganizationID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -179,7 +180,7 @@ type Organization struct { } type OrganizationToken struct { - OrganizationTokenID pgtype.Text + OrganizationTokenID resource.ID CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text Expiry pgtype.Timestamptz @@ -194,14 +195,14 @@ type PhaseStatus struct { } type PhaseStatusTimestamp struct { - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text Status pgtype.Text Timestamp pgtype.Timestamptz } type Plan struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text PlanBin []byte PlanJSON []byte @@ -216,10 +217,10 @@ type RegistrySession struct { } type RepoConnection struct { - ModuleID pgtype.Text - WorkspaceID pgtype.Text + ModuleID *resource.ID + WorkspaceID *resource.ID RepoPath pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } type Repohook struct { @@ -227,11 +228,11 @@ type Repohook struct { VCSID pgtype.Text Secret pgtype.Text RepoPath pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } type Run struct { - RunID pgtype.Text + RunID resource.ID CreatedAt pgtype.Timestamptz CancelSignaledAt pgtype.Timestamptz IsDestroy pgtype.Bool @@ -242,8 +243,8 @@ type Run struct { TargetAddrs []pgtype.Text LockFile []byte Status pgtype.Text - WorkspaceID pgtype.Text - ConfigurationVersionID pgtype.Text + WorkspaceID resource.ID + ConfigurationVersionID resource.ID AutoApply pgtype.Bool PlanOnly pgtype.Bool CreatedBy pgtype.Text @@ -257,19 +258,19 @@ type RunStatus struct { } type RunStatusTimestamp struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text Timestamp pgtype.Timestamptz } type RunVariable struct { - RunID pgtype.Text + RunID resource.ID Key pgtype.Text Value pgtype.Text } type Runner struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -277,7 +278,7 @@ type Runner struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID } type RunnerStatus struct { @@ -297,21 +298,21 @@ type Session struct { } type StateVersion struct { - StateVersionID pgtype.Text + StateVersionID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID Status pgtype.Text } type StateVersionOutput struct { - StateVersionOutputID pgtype.Text + StateVersionOutputID resource.ID Name pgtype.Text Sensitive pgtype.Bool Type pgtype.Text Value []byte - StateVersionID pgtype.Text + StateVersionID resource.ID } type StateVersionStatus struct { @@ -325,7 +326,7 @@ type Tag struct { } type Team struct { - TeamID pgtype.Text + TeamID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz PermissionManageWorkspaces pgtype.Bool @@ -340,27 +341,27 @@ type Team struct { } type TeamMembership struct { - TeamID pgtype.Text + TeamID resource.ID Username pgtype.Text } type TeamToken struct { - TeamTokenID pgtype.Text + TeamTokenID resource.ID Description pgtype.Text CreatedAt pgtype.Timestamptz - TeamID pgtype.Text + TeamID resource.ID Expiry pgtype.Timestamptz } type Token struct { - TokenID pgtype.Text + TokenID resource.ID CreatedAt pgtype.Timestamptz Description pgtype.Text Username pgtype.Text } type User struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -372,7 +373,7 @@ type VCSKind struct { } type VCSProvider struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -382,7 +383,7 @@ type VCSProvider struct { } type Variable struct { - VariableID pgtype.Text + VariableID resource.ID Key pgtype.Text Value pgtype.Text Description pgtype.Text @@ -397,7 +398,7 @@ type VariableCategory struct { } type VariableSet struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -405,17 +406,17 @@ type VariableSet struct { } type VariableSetVariable struct { - VariableSetID pgtype.Text - VariableID pgtype.Text + VariableSetID resource.ID + VariableID resource.ID } type VariableSetWorkspace struct { - VariableSetID pgtype.Text - WorkspaceID pgtype.Text + VariableSetID resource.ID + WorkspaceID resource.ID } type Workspace struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -435,21 +436,21 @@ type Workspace struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID } type WorkspacePermission struct { - WorkspaceID pgtype.Text - TeamID pgtype.Text + WorkspaceID resource.ID + TeamID resource.ID Role pgtype.Text } @@ -458,11 +459,11 @@ type WorkspaceRole struct { } type WorkspaceTag struct { - TagID pgtype.Text - WorkspaceID pgtype.Text + TagID resource.ID + WorkspaceID resource.ID } type WorkspaceVariable struct { - WorkspaceID pgtype.Text - VariableID pgtype.Text + WorkspaceID resource.ID + VariableID resource.ID } diff --git a/internal/sql/sqlc/module.sql.go b/internal/sql/sqlc/module.sql.go index 911ff24e1..5fe40902d 100644 --- a/internal/sql/sqlc/module.sql.go +++ b/internal/sql/sqlc/module.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteModuleByID = `-- name: DeleteModuleByID :one @@ -18,9 +19,9 @@ WHERE module_id = $1 RETURNING module_id ` -func (q *Queries) DeleteModuleByID(ctx context.Context, moduleID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteModuleByID(ctx context.Context, moduleID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteModuleByID, moduleID) - var module_id pgtype.Text + var module_id resource.ID err := row.Scan(&module_id) return module_id, err } @@ -32,9 +33,9 @@ WHERE module_version_id = $1 RETURNING module_version_id ` -func (q *Queries) DeleteModuleVersionByID(ctx context.Context, moduleVersionID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteModuleVersionByID(ctx context.Context, moduleVersionID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteModuleVersionByID, moduleVersionID) - var module_version_id pgtype.Text + var module_version_id resource.ID err := row.Scan(&module_version_id) return module_version_id, err } @@ -63,19 +64,19 @@ AND r.repo_path = $2 ` type FindModuleByConnectionParams struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } type FindModuleByConnectionRow struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text Provider pgtype.Text Status pgtype.Text OrganizationName pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text ModuleVersions []ModuleVersion } @@ -121,19 +122,19 @@ WHERE m.module_id = $1 ` type FindModuleByIDRow struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text Provider pgtype.Text Status pgtype.Text OrganizationName pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text ModuleVersions []ModuleVersion } -func (q *Queries) FindModuleByID(ctx context.Context, id pgtype.Text) (FindModuleByIDRow, error) { +func (q *Queries) FindModuleByID(ctx context.Context, id resource.ID) (FindModuleByIDRow, error) { row := q.db.QueryRow(ctx, findModuleByID, id) var i FindModuleByIDRow err := row.Scan( @@ -175,19 +176,19 @@ WHERE mv.module_version_id = $1 ` type FindModuleByModuleVersionIDRow struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text Provider pgtype.Text Status pgtype.Text OrganizationName pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text ModuleVersions []ModuleVersion } -func (q *Queries) FindModuleByModuleVersionID(ctx context.Context, moduleVersionID pgtype.Text) (FindModuleByModuleVersionIDRow, error) { +func (q *Queries) FindModuleByModuleVersionID(ctx context.Context, moduleVersionID resource.ID) (FindModuleByModuleVersionIDRow, error) { row := q.db.QueryRow(ctx, findModuleByModuleVersionID, moduleVersionID) var i FindModuleByModuleVersionIDRow err := row.Scan( @@ -236,14 +237,14 @@ type FindModuleByNameParams struct { } type FindModuleByNameRow struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text Provider pgtype.Text Status pgtype.Text OrganizationName pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text ModuleVersions []ModuleVersion } @@ -272,7 +273,7 @@ FROM module_tarballs WHERE module_version_id = $1 ` -func (q *Queries) FindModuleTarball(ctx context.Context, moduleVersionID pgtype.Text) ([]byte, error) { +func (q *Queries) FindModuleTarball(ctx context.Context, moduleVersionID resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, findModuleTarball, moduleVersionID) var tarball []byte err := row.Scan(&tarball) @@ -300,7 +301,7 @@ INSERT INTO modules ( ` type InsertModuleParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -335,12 +336,12 @@ RETURNING module_version_id type InsertModuleTarballParams struct { Tarball []byte - ModuleVersionID pgtype.Text + ModuleVersionID resource.ID } -func (q *Queries) InsertModuleTarball(ctx context.Context, arg InsertModuleTarballParams) (pgtype.Text, error) { +func (q *Queries) InsertModuleTarball(ctx context.Context, arg InsertModuleTarballParams) (resource.ID, error) { row := q.db.QueryRow(ctx, insertModuleTarball, arg.Tarball, arg.ModuleVersionID) - var module_version_id pgtype.Text + var module_version_id resource.ID err := row.Scan(&module_version_id) return module_version_id, err } @@ -365,11 +366,11 @@ RETURNING module_version_id, version, created_at, updated_at, status, status_err ` type InsertModuleVersionParams struct { - ModuleVersionID pgtype.Text + ModuleVersionID resource.ID Version pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz - ModuleID pgtype.Text + ModuleID resource.ID Status pgtype.Text } @@ -418,14 +419,14 @@ WHERE m.organization_name = $1 ` type ListModulesByOrganizationRow struct { - ModuleID pgtype.Text + ModuleID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text Provider pgtype.Text Status pgtype.Text OrganizationName pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text ModuleVersions []ModuleVersion } @@ -470,12 +471,12 @@ RETURNING module_id type UpdateModuleStatusByIDParams struct { Status pgtype.Text - ModuleID pgtype.Text + ModuleID resource.ID } -func (q *Queries) UpdateModuleStatusByID(ctx context.Context, arg UpdateModuleStatusByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateModuleStatusByID(ctx context.Context, arg UpdateModuleStatusByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateModuleStatusByID, arg.Status, arg.ModuleID) - var module_id pgtype.Text + var module_id resource.ID err := row.Scan(&module_id) return module_id, err } @@ -492,7 +493,7 @@ RETURNING module_version_id, version, created_at, updated_at, status, status_err type UpdateModuleVersionStatusByIDParams struct { Status pgtype.Text StatusError pgtype.Text - ModuleVersionID pgtype.Text + ModuleVersionID resource.ID } func (q *Queries) UpdateModuleVersionStatusByID(ctx context.Context, arg UpdateModuleVersionStatusByIDParams) (ModuleVersion, error) { diff --git a/internal/sql/sqlc/notification_configuration.sql.go b/internal/sql/sqlc/notification_configuration.sql.go index a14fd357b..657ffad75 100644 --- a/internal/sql/sqlc/notification_configuration.sql.go +++ b/internal/sql/sqlc/notification_configuration.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteNotificationConfigurationByID = `-- name: DeleteNotificationConfigurationByID :one @@ -17,9 +18,9 @@ WHERE notification_configuration_id = $1 RETURNING notification_configuration_id ` -func (q *Queries) DeleteNotificationConfigurationByID(ctx context.Context, notificationConfigurationID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteNotificationConfigurationByID(ctx context.Context, notificationConfigurationID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteNotificationConfigurationByID, notificationConfigurationID) - var notification_configuration_id pgtype.Text + var notification_configuration_id resource.ID err := row.Scan(¬ification_configuration_id) return notification_configuration_id, err } @@ -65,7 +66,7 @@ FROM notification_configurations WHERE notification_configuration_id = $1 ` -func (q *Queries) FindNotificationConfiguration(ctx context.Context, notificationConfigurationID pgtype.Text) (NotificationConfiguration, error) { +func (q *Queries) FindNotificationConfiguration(ctx context.Context, notificationConfigurationID resource.ID) (NotificationConfiguration, error) { row := q.db.QueryRow(ctx, findNotificationConfiguration, notificationConfigurationID) var i NotificationConfiguration err := row.Scan( @@ -89,7 +90,7 @@ WHERE notification_configuration_id = $1 FOR UPDATE ` -func (q *Queries) FindNotificationConfigurationForUpdate(ctx context.Context, notificationConfigurationID pgtype.Text) (NotificationConfiguration, error) { +func (q *Queries) FindNotificationConfigurationForUpdate(ctx context.Context, notificationConfigurationID resource.ID) (NotificationConfiguration, error) { row := q.db.QueryRow(ctx, findNotificationConfigurationForUpdate, notificationConfigurationID) var i NotificationConfiguration err := row.Scan( @@ -112,7 +113,7 @@ FROM notification_configurations WHERE workspace_id = $1 ` -func (q *Queries) FindNotificationConfigurationsByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) ([]NotificationConfiguration, error) { +func (q *Queries) FindNotificationConfigurationsByWorkspaceID(ctx context.Context, workspaceID resource.ID) ([]NotificationConfiguration, error) { rows, err := q.db.Query(ctx, findNotificationConfigurationsByWorkspaceID, workspaceID) if err != nil { return nil, err @@ -167,7 +168,7 @@ INSERT INTO notification_configurations ( ` type InsertNotificationConfigurationParams struct { - NotificationConfigurationID pgtype.Text + NotificationConfigurationID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -175,7 +176,7 @@ type InsertNotificationConfigurationParams struct { Triggers []pgtype.Text DestinationType pgtype.Text Enabled pgtype.Bool - WorkspaceID pgtype.Text + WorkspaceID resource.ID } func (q *Queries) InsertNotificationConfiguration(ctx context.Context, arg InsertNotificationConfigurationParams) error { @@ -211,10 +212,10 @@ type UpdateNotificationConfigurationByIDParams struct { Name pgtype.Text Triggers []pgtype.Text URL pgtype.Text - NotificationConfigurationID pgtype.Text + NotificationConfigurationID resource.ID } -func (q *Queries) UpdateNotificationConfigurationByID(ctx context.Context, arg UpdateNotificationConfigurationByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateNotificationConfigurationByID(ctx context.Context, arg UpdateNotificationConfigurationByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateNotificationConfigurationByID, arg.UpdatedAt, arg.Enabled, @@ -223,7 +224,7 @@ func (q *Queries) UpdateNotificationConfigurationByID(ctx context.Context, arg U arg.URL, arg.NotificationConfigurationID, ) - var notification_configuration_id pgtype.Text + var notification_configuration_id resource.ID err := row.Scan(¬ification_configuration_id) return notification_configuration_id, err } diff --git a/internal/sql/sqlc/organization.sql.go b/internal/sql/sqlc/organization.sql.go index a8fb3d774..056a7d336 100644 --- a/internal/sql/sqlc/organization.sql.go +++ b/internal/sql/sqlc/organization.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countOrganizations = `-- name: CountOrganizations :one @@ -31,9 +32,9 @@ WHERE name = $1 RETURNING organization_id ` -func (q *Queries) DeleteOrganizationByName(ctx context.Context, name pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteOrganizationByName(ctx context.Context, name pgtype.Text) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteOrganizationByName, name) - var organization_id pgtype.Text + var organization_id resource.ID err := row.Scan(&organization_id) return organization_id, err } @@ -42,7 +43,7 @@ const findOrganizationByID = `-- name: FindOrganizationByID :one SELECT organization_id, created_at, updated_at, name, session_remember, session_timeout, email, collaborator_auth_policy, allow_force_delete_workspaces, cost_estimation_enabled FROM organizations WHERE organization_id = $1 ` -func (q *Queries) FindOrganizationByID(ctx context.Context, organizationID pgtype.Text) (Organization, error) { +func (q *Queries) FindOrganizationByID(ctx context.Context, organizationID resource.ID) (Organization, error) { row := q.db.QueryRow(ctx, findOrganizationByID, organizationID) var i Organization err := row.Scan( @@ -113,7 +114,7 @@ FROM workspaces WHERE workspace_id = $1 ` -func (q *Queries) FindOrganizationNameByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) FindOrganizationNameByWorkspaceID(ctx context.Context, workspaceID resource.ID) (pgtype.Text, error) { row := q.db.QueryRow(ctx, findOrganizationNameByWorkspaceID, workspaceID) var organization_name pgtype.Text err := row.Scan(&organization_name) @@ -192,7 +193,7 @@ INSERT INTO organizations ( ` type InsertOrganizationParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Name pgtype.Text @@ -247,7 +248,7 @@ type UpdateOrganizationByNameParams struct { Name pgtype.Text } -func (q *Queries) UpdateOrganizationByName(ctx context.Context, arg UpdateOrganizationByNameParams) (pgtype.Text, error) { +func (q *Queries) UpdateOrganizationByName(ctx context.Context, arg UpdateOrganizationByNameParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateOrganizationByName, arg.NewName, arg.Email, @@ -259,7 +260,7 @@ func (q *Queries) UpdateOrganizationByName(ctx context.Context, arg UpdateOrgani arg.UpdatedAt, arg.Name, ) - var organization_id pgtype.Text + var organization_id resource.ID err := row.Scan(&organization_id) return organization_id, err } diff --git a/internal/sql/sqlc/organization_token.sql.go b/internal/sql/sqlc/organization_token.sql.go index f62894694..67a0ce571 100644 --- a/internal/sql/sqlc/organization_token.sql.go +++ b/internal/sql/sqlc/organization_token.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteOrganiationTokenByName = `-- name: DeleteOrganiationTokenByName :one @@ -18,9 +19,9 @@ WHERE organization_name = $1 RETURNING organization_token_id ` -func (q *Queries) DeleteOrganiationTokenByName(ctx context.Context, organizationName pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteOrganiationTokenByName(ctx context.Context, organizationName pgtype.Text) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteOrganiationTokenByName, organizationName) - var organization_token_id pgtype.Text + var organization_token_id resource.ID err := row.Scan(&organization_token_id) return organization_token_id, err } @@ -62,7 +63,7 @@ FROM organization_tokens WHERE organization_token_id = $1 ` -func (q *Queries) FindOrganizationTokensByID(ctx context.Context, organizationTokenID pgtype.Text) (OrganizationToken, error) { +func (q *Queries) FindOrganizationTokensByID(ctx context.Context, organizationTokenID resource.ID) (OrganizationToken, error) { row := q.db.QueryRow(ctx, findOrganizationTokensByID, organizationTokenID) var i OrganizationToken err := row.Scan( @@ -110,7 +111,7 @@ INSERT INTO organization_tokens ( ` type UpsertOrganizationTokenParams struct { - OrganizationTokenID pgtype.Text + OrganizationTokenID resource.ID CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text Expiry pgtype.Timestamptz diff --git a/internal/sql/sqlc/phase.sql.go b/internal/sql/sqlc/phase.sql.go index 80306e5a3..0dfcce50d 100644 --- a/internal/sql/sqlc/phase.sql.go +++ b/internal/sql/sqlc/phase.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const findLogChunkByID = `-- name: FindLogChunkByID :one @@ -24,7 +25,7 @@ WHERE chunk_id = $1 type FindLogChunkByIDRow struct { ChunkID pgtype.Text - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text Chunk []byte Offset pgtype.Int4 @@ -57,7 +58,7 @@ GROUP BY run_id, phase ` type FindLogsParams struct { - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text } @@ -87,7 +88,7 @@ INSERT INTO logs ( type InsertLogChunkParams struct { ChunkID pgtype.Text - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text Chunk []byte Offset pgtype.Int4 @@ -119,7 +120,7 @@ INSERT INTO phase_status_timestamps ( ` type InsertPhaseStatusTimestampParams struct { - RunID pgtype.Text + RunID resource.ID Phase pgtype.Text Status pgtype.Text Timestamp pgtype.Timestamptz diff --git a/internal/sql/sqlc/plan.sql.go b/internal/sql/sqlc/plan.sql.go index c3aa50bcd..ea53e3657 100644 --- a/internal/sql/sqlc/plan.sql.go +++ b/internal/sql/sqlc/plan.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const getPlanBinByID = `-- name: GetPlanBinByID :one @@ -17,7 +18,7 @@ FROM plans WHERE run_id = $1 ` -func (q *Queries) GetPlanBinByID(ctx context.Context, runID pgtype.Text) ([]byte, error) { +func (q *Queries) GetPlanBinByID(ctx context.Context, runID resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, getPlanBinByID, runID) var plan_bin []byte err := row.Scan(&plan_bin) @@ -30,7 +31,7 @@ FROM plans WHERE run_id = $1 ` -func (q *Queries) GetPlanJSONByID(ctx context.Context, runID pgtype.Text) ([]byte, error) { +func (q *Queries) GetPlanJSONByID(ctx context.Context, runID resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, getPlanJSONByID, runID) var plan_json []byte err := row.Scan(&plan_json) @@ -48,7 +49,7 @@ INSERT INTO plans ( ` type InsertPlanParams struct { - RunID pgtype.Text + RunID resource.ID Status pgtype.Text } @@ -66,12 +67,12 @@ RETURNING run_id type UpdatePlanBinByIDParams struct { PlanBin []byte - RunID pgtype.Text + RunID resource.ID } -func (q *Queries) UpdatePlanBinByID(ctx context.Context, arg UpdatePlanBinByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdatePlanBinByID(ctx context.Context, arg UpdatePlanBinByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updatePlanBinByID, arg.PlanBin, arg.RunID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -85,12 +86,12 @@ RETURNING run_id type UpdatePlanJSONByIDParams struct { PlanJSON []byte - RunID pgtype.Text + RunID resource.ID } -func (q *Queries) UpdatePlanJSONByID(ctx context.Context, arg UpdatePlanJSONByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdatePlanJSONByID(ctx context.Context, arg UpdatePlanJSONByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updatePlanJSONByID, arg.PlanJSON, arg.RunID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -104,12 +105,12 @@ RETURNING run_id type UpdatePlanStatusByIDParams struct { Status pgtype.Text - RunID pgtype.Text + RunID resource.ID } -func (q *Queries) UpdatePlanStatusByID(ctx context.Context, arg UpdatePlanStatusByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdatePlanStatusByID(ctx context.Context, arg UpdatePlanStatusByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updatePlanStatusByID, arg.Status, arg.RunID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -137,10 +138,10 @@ type UpdatePlannedChangesByIDParams struct { OutputAdditions interface{} OutputChanges interface{} OutputDestructions interface{} - RunID pgtype.Text + RunID resource.ID } -func (q *Queries) UpdatePlannedChangesByID(ctx context.Context, arg UpdatePlannedChangesByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdatePlannedChangesByID(ctx context.Context, arg UpdatePlannedChangesByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updatePlannedChangesByID, arg.ResourceAdditions, arg.ResourceChanges, @@ -150,7 +151,7 @@ func (q *Queries) UpdatePlannedChangesByID(ctx context.Context, arg UpdatePlanne arg.OutputDestructions, arg.RunID, ) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } diff --git a/internal/sql/sqlc/repo_connections.sql.go b/internal/sql/sqlc/repo_connections.sql.go index b65978851..af69576e8 100644 --- a/internal/sql/sqlc/repo_connections.sql.go +++ b/internal/sql/sqlc/repo_connections.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteModuleConnectionByID = `-- name: DeleteModuleConnectionByID :one @@ -18,7 +19,7 @@ WHERE module_id = $1 RETURNING module_id, workspace_id, repo_path, vcs_provider_id ` -func (q *Queries) DeleteModuleConnectionByID(ctx context.Context, moduleID pgtype.Text) (RepoConnection, error) { +func (q *Queries) DeleteModuleConnectionByID(ctx context.Context, moduleID *resource.ID) (RepoConnection, error) { row := q.db.QueryRow(ctx, deleteModuleConnectionByID, moduleID) var i RepoConnection err := row.Scan( @@ -37,7 +38,7 @@ WHERE workspace_id = $1 RETURNING module_id, workspace_id, repo_path, vcs_provider_id ` -func (q *Queries) DeleteWorkspaceConnectionByID(ctx context.Context, workspaceID pgtype.Text) (RepoConnection, error) { +func (q *Queries) DeleteWorkspaceConnectionByID(ctx context.Context, workspaceID *resource.ID) (RepoConnection, error) { row := q.db.QueryRow(ctx, deleteWorkspaceConnectionByID, workspaceID) var i RepoConnection err := row.Scan( @@ -64,10 +65,10 @@ INSERT INTO repo_connections ( ` type InsertRepoConnectionParams struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text - WorkspaceID pgtype.Text - ModuleID pgtype.Text + WorkspaceID *resource.ID + ModuleID *resource.ID } func (q *Queries) InsertRepoConnection(ctx context.Context, arg InsertRepoConnectionParams) error { diff --git a/internal/sql/sqlc/repohook.sql.go b/internal/sql/sqlc/repohook.sql.go index 5510d7a6a..d519797d8 100644 --- a/internal/sql/sqlc/repohook.sql.go +++ b/internal/sql/sqlc/repohook.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteRepohookByID = `-- name: DeleteRepohookByID :one @@ -47,7 +48,7 @@ WHERE w.repohook_id = $1 type FindRepohookByIDRow struct { RepohookID pgtype.UUID VCSID pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID Secret pgtype.Text RepoPath pgtype.Text VCSKind pgtype.Text @@ -83,13 +84,13 @@ AND w.vcs_provider_id = $2 type FindRepohookByRepoAndProviderParams struct { RepoPath pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } type FindRepohookByRepoAndProviderRow struct { RepohookID pgtype.UUID VCSID pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID Secret pgtype.Text RepoPath pgtype.Text VCSKind pgtype.Text @@ -137,7 +138,7 @@ JOIN vcs_providers v USING (vcs_provider_id) type FindRepohooksRow struct { RepohookID pgtype.UUID VCSID pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID Secret pgtype.Text RepoPath pgtype.Text VCSKind pgtype.Text @@ -190,7 +191,7 @@ WHERE NOT EXISTS ( type FindUnreferencedRepohooksRow struct { RepohookID pgtype.UUID VCSID pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID Secret pgtype.Text RepoPath pgtype.Text VCSKind pgtype.Text @@ -254,7 +255,7 @@ JOIN vcs_providers v USING (vcs_provider_id) type InsertRepohookParams struct { RepohookID pgtype.UUID VCSID pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID Secret pgtype.Text RepoPath pgtype.Text } diff --git a/internal/sql/sqlc/run.sql.go b/internal/sql/sqlc/run.sql.go index 30bdac933..955160313 100644 --- a/internal/sql/sqlc/run.sql.go +++ b/internal/sql/sqlc/run.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countRuns = `-- name: CountRuns :one @@ -61,9 +62,9 @@ WHERE run_id = $1 RETURNING run_id ` -func (q *Queries) DeleteRunByID(ctx context.Context, runID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteRunByID(ctx context.Context, runID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteRunByID, runID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -144,7 +145,7 @@ WHERE runs.run_id = $1 ` type FindRunByIDRow struct { - RunID pgtype.Text + RunID resource.ID CreatedAt pgtype.Timestamptz CancelSignaledAt pgtype.Timestamptz IsDestroy pgtype.Bool @@ -161,8 +162,8 @@ type FindRunByIDRow struct { PlanResourceReport *Report PlanOutputReport *Report ApplyResourceReport *Report - ConfigurationVersionID pgtype.Text - WorkspaceID pgtype.Text + ConfigurationVersionID resource.ID + WorkspaceID resource.ID PlanOnly pgtype.Bool CreatedBy pgtype.Text TerraformVersion pgtype.Text @@ -178,7 +179,7 @@ type FindRunByIDRow struct { IngressAttributes *IngressAttribute } -func (q *Queries) FindRunByID(ctx context.Context, runID pgtype.Text) (FindRunByIDRow, error) { +func (q *Queries) FindRunByID(ctx context.Context, runID resource.ID) (FindRunByIDRow, error) { row := q.db.QueryRow(ctx, findRunByID, runID) var i FindRunByIDRow err := row.Scan( @@ -295,7 +296,7 @@ FOR UPDATE OF runs, plans, applies ` type FindRunByIDForUpdateRow struct { - RunID pgtype.Text + RunID resource.ID CreatedAt pgtype.Timestamptz CancelSignaledAt pgtype.Timestamptz IsDestroy pgtype.Bool @@ -312,8 +313,8 @@ type FindRunByIDForUpdateRow struct { PlanResourceReport *Report PlanOutputReport *Report ApplyResourceReport *Report - ConfigurationVersionID pgtype.Text - WorkspaceID pgtype.Text + ConfigurationVersionID resource.ID + WorkspaceID resource.ID PlanOnly pgtype.Bool CreatedBy pgtype.Text TerraformVersion pgtype.Text @@ -329,7 +330,7 @@ type FindRunByIDForUpdateRow struct { IngressAttributes *IngressAttribute } -func (q *Queries) FindRunByIDForUpdate(ctx context.Context, runID pgtype.Text) (FindRunByIDForUpdateRow, error) { +func (q *Queries) FindRunByIDForUpdate(ctx context.Context, runID resource.ID) (FindRunByIDForUpdateRow, error) { row := q.db.QueryRow(ctx, findRunByIDForUpdate, runID) var i FindRunByIDForUpdateRow err := row.Scan( @@ -469,7 +470,7 @@ type FindRunsParams struct { } type FindRunsRow struct { - RunID pgtype.Text + RunID resource.ID CreatedAt pgtype.Timestamptz CancelSignaledAt pgtype.Timestamptz IsDestroy pgtype.Bool @@ -486,8 +487,8 @@ type FindRunsRow struct { PlanResourceReport *Report PlanOutputReport *Report ApplyResourceReport *Report - ConfigurationVersionID pgtype.Text - WorkspaceID pgtype.Text + ConfigurationVersionID resource.ID + WorkspaceID resource.ID PlanOnly pgtype.Bool CreatedBy pgtype.Text TerraformVersion pgtype.Text @@ -573,7 +574,7 @@ FROM runs WHERE run_id = $1 ` -func (q *Queries) GetLockFileByID(ctx context.Context, runID pgtype.Text) ([]byte, error) { +func (q *Queries) GetLockFileByID(ctx context.Context, runID resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, getLockFileByID, runID) var lock_file []byte err := row.Scan(&lock_file) @@ -621,7 +622,7 @@ INSERT INTO runs ( ` type InsertRunParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz IsDestroy pgtype.Bool PositionInQueue pgtype.Int4 @@ -633,8 +634,8 @@ type InsertRunParams struct { TargetAddrs []pgtype.Text AutoApply pgtype.Bool PlanOnly pgtype.Bool - ConfigurationVersionID pgtype.Text - WorkspaceID pgtype.Text + ConfigurationVersionID resource.ID + WorkspaceID resource.ID CreatedBy pgtype.Text TerraformVersion pgtype.Text AllowEmptyApply pgtype.Bool @@ -676,7 +677,7 @@ INSERT INTO run_status_timestamps ( ` type InsertRunStatusTimestampParams struct { - ID pgtype.Text + ID resource.ID Status pgtype.Text Timestamp pgtype.Timestamptz } @@ -699,7 +700,7 @@ INSERT INTO run_variables ( ` type InsertRunVariableParams struct { - RunID pgtype.Text + RunID resource.ID Key pgtype.Text Value pgtype.Text } @@ -718,12 +719,12 @@ RETURNING run_id type PutLockFileParams struct { LockFile []byte - RunID pgtype.Text + RunID resource.ID } -func (q *Queries) PutLockFile(ctx context.Context, arg PutLockFileParams) (pgtype.Text, error) { +func (q *Queries) PutLockFile(ctx context.Context, arg PutLockFileParams) (resource.ID, error) { row := q.db.QueryRow(ctx, putLockFile, arg.LockFile, arg.RunID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -738,12 +739,12 @@ RETURNING run_id type UpdateCancelSignaledAtParams struct { CancelSignaledAt pgtype.Timestamptz - ID pgtype.Text + ID resource.ID } -func (q *Queries) UpdateCancelSignaledAt(ctx context.Context, arg UpdateCancelSignaledAtParams) (pgtype.Text, error) { +func (q *Queries) UpdateCancelSignaledAt(ctx context.Context, arg UpdateCancelSignaledAtParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateCancelSignaledAt, arg.CancelSignaledAt, arg.ID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } @@ -758,12 +759,12 @@ RETURNING run_id type UpdateRunStatusParams struct { Status pgtype.Text - ID pgtype.Text + ID resource.ID } -func (q *Queries) UpdateRunStatus(ctx context.Context, arg UpdateRunStatusParams) (pgtype.Text, error) { +func (q *Queries) UpdateRunStatus(ctx context.Context, arg UpdateRunStatusParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateRunStatus, arg.Status, arg.ID) - var run_id pgtype.Text + var run_id resource.ID err := row.Scan(&run_id) return run_id, err } diff --git a/internal/sql/sqlc/runner.sql.go b/internal/sql/sqlc/runner.sql.go index 6110fe940..ff1a895e5 100644 --- a/internal/sql/sqlc/runner.sql.go +++ b/internal/sql/sqlc/runner.sql.go @@ -10,6 +10,7 @@ import ( "net/netip" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteRunner = `-- name: DeleteRunner :one @@ -19,7 +20,7 @@ WHERE runner_id = $1 RETURNING runner_id, name, version, max_jobs, ip_address, last_ping_at, last_status_at, status, agent_pool_id ` -func (q *Queries) DeleteRunner(ctx context.Context, runnerID pgtype.Text) (Runner, error) { +func (q *Queries) DeleteRunner(ctx context.Context, runnerID resource.ID) (Runner, error) { row := q.db.QueryRow(ctx, deleteRunner, runnerID) var i Runner err := row.Scan( @@ -52,7 +53,7 @@ WHERE a.runner_id = $1 ` type FindRunnerByIDRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -60,12 +61,12 @@ type FindRunnerByIDRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } -func (q *Queries) FindRunnerByID(ctx context.Context, runnerID pgtype.Text) (FindRunnerByIDRow, error) { +func (q *Queries) FindRunnerByID(ctx context.Context, runnerID resource.ID) (FindRunnerByIDRow, error) { row := q.db.QueryRow(ctx, findRunnerByID, runnerID) var i FindRunnerByIDRow err := row.Scan( @@ -100,7 +101,7 @@ FOR UPDATE OF a ` type FindRunnerByIDForUpdateRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -108,12 +109,12 @@ type FindRunnerByIDForUpdateRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } -func (q *Queries) FindRunnerByIDForUpdate(ctx context.Context, runnerID pgtype.Text) (FindRunnerByIDForUpdateRow, error) { +func (q *Queries) FindRunnerByIDForUpdate(ctx context.Context, runnerID resource.ID) (FindRunnerByIDForUpdateRow, error) { row := q.db.QueryRow(ctx, findRunnerByIDForUpdate, runnerID) var i FindRunnerByIDForUpdateRow err := row.Scan( @@ -147,7 +148,7 @@ ORDER BY a.last_ping_at DESC ` type FindRunnersRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -155,7 +156,7 @@ type FindRunnersRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } @@ -208,7 +209,7 @@ ORDER BY last_ping_at DESC ` type FindRunnersByOrganizationRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -216,7 +217,7 @@ type FindRunnersByOrganizationRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } @@ -269,7 +270,7 @@ ORDER BY last_ping_at DESC ` type FindRunnersByPoolIDRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -277,12 +278,12 @@ type FindRunnersByPoolIDRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } -func (q *Queries) FindRunnersByPoolID(ctx context.Context, agentPoolID pgtype.Text) ([]FindRunnersByPoolIDRow, error) { +func (q *Queries) FindRunnersByPoolID(ctx context.Context, agentPoolID resource.ID) ([]FindRunnersByPoolIDRow, error) { rows, err := q.db.Query(ctx, findRunnersByPoolID, agentPoolID) if err != nil { return nil, err @@ -329,7 +330,7 @@ ORDER BY last_ping_at DESC ` type FindServerRunnersRow struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -337,7 +338,7 @@ type FindServerRunnersRow struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AgentPool *AgentPool CurrentJobs int64 } @@ -399,7 +400,7 @@ INSERT INTO runners ( ` type InsertRunnerParams struct { - RunnerID pgtype.Text + RunnerID resource.ID Name pgtype.Text Version pgtype.Text MaxJobs pgtype.Int4 @@ -407,7 +408,7 @@ type InsertRunnerParams struct { LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz Status pgtype.Text - AgentPoolID pgtype.Text + AgentPoolID *resource.ID } func (q *Queries) InsertRunner(ctx context.Context, arg InsertRunnerParams) error { @@ -438,7 +439,7 @@ type UpdateRunnerParams struct { Status pgtype.Text LastPingAt pgtype.Timestamptz LastStatusAt pgtype.Timestamptz - RunnerID pgtype.Text + RunnerID resource.ID } func (q *Queries) UpdateRunner(ctx context.Context, arg UpdateRunnerParams) (Runner, error) { diff --git a/internal/sql/sqlc/state_version.sql.go b/internal/sql/sqlc/state_version.sql.go index de2586007..3f461bd8b 100644 --- a/internal/sql/sqlc/state_version.sql.go +++ b/internal/sql/sqlc/state_version.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countStateVersionsByWorkspaceID = `-- name: CountStateVersionsByWorkspaceID :one @@ -18,7 +19,7 @@ WHERE workspace_id = $1 AND status = 'finalized' ` -func (q *Queries) CountStateVersionsByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) (int64, error) { +func (q *Queries) CountStateVersionsByWorkspaceID(ctx context.Context, workspaceID resource.ID) (int64, error) { row := q.db.QueryRow(ctx, countStateVersionsByWorkspaceID, workspaceID) var count int64 err := row.Scan(&count) @@ -32,9 +33,9 @@ WHERE state_version_id = $1 RETURNING state_version_id ` -func (q *Queries) DeleteStateVersionByID(ctx context.Context, stateVersionID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteStateVersionByID(ctx context.Context, stateVersionID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteStateVersionByID, stateVersionID) - var state_version_id pgtype.Text + var state_version_id resource.ID err := row.Scan(&state_version_id) return state_version_id, err } @@ -46,7 +47,7 @@ WHERE workspace_id = $1 AND status = 'pending' ` -func (q *Queries) DiscardPendingStateVersionsByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) error { +func (q *Queries) DiscardPendingStateVersionsByWorkspaceID(ctx context.Context, workspaceID resource.ID) error { _, err := q.db.Exec(ctx, discardPendingStateVersionsByWorkspaceID, workspaceID) return err } @@ -66,16 +67,16 @@ WHERE w.workspace_id = $1 ` type FindCurrentStateVersionByWorkspaceIDRow struct { - StateVersionID pgtype.Text + StateVersionID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID Status pgtype.Text StateVersionOutputs []StateVersionOutput } -func (q *Queries) FindCurrentStateVersionByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) (FindCurrentStateVersionByWorkspaceIDRow, error) { +func (q *Queries) FindCurrentStateVersionByWorkspaceID(ctx context.Context, workspaceID resource.ID) (FindCurrentStateVersionByWorkspaceIDRow, error) { row := q.db.QueryRow(ctx, findCurrentStateVersionByWorkspaceID, workspaceID) var i FindCurrentStateVersionByWorkspaceIDRow err := row.Scan( @@ -104,16 +105,16 @@ WHERE sv.state_version_id = $1 ` type FindStateVersionByIDRow struct { - StateVersionID pgtype.Text + StateVersionID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID Status pgtype.Text StateVersionOutputs []StateVersionOutput } -func (q *Queries) FindStateVersionByID(ctx context.Context, id pgtype.Text) (FindStateVersionByIDRow, error) { +func (q *Queries) FindStateVersionByID(ctx context.Context, id resource.ID) (FindStateVersionByIDRow, error) { row := q.db.QueryRow(ctx, findStateVersionByID, id) var i FindStateVersionByIDRow err := row.Scan( @@ -143,16 +144,16 @@ FOR UPDATE OF sv ` type FindStateVersionByIDForUpdateRow struct { - StateVersionID pgtype.Text + StateVersionID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID Status pgtype.Text StateVersionOutputs []StateVersionOutput } -func (q *Queries) FindStateVersionByIDForUpdate(ctx context.Context, id pgtype.Text) (FindStateVersionByIDForUpdateRow, error) { +func (q *Queries) FindStateVersionByIDForUpdate(ctx context.Context, id resource.ID) (FindStateVersionByIDForUpdateRow, error) { row := q.db.QueryRow(ctx, findStateVersionByIDForUpdate, id) var i FindStateVersionByIDForUpdateRow err := row.Scan( @@ -173,7 +174,7 @@ FROM state_versions WHERE state_version_id = $1 ` -func (q *Queries) FindStateVersionStateByID(ctx context.Context, id pgtype.Text) ([]byte, error) { +func (q *Queries) FindStateVersionStateByID(ctx context.Context, id resource.ID) ([]byte, error) { row := q.db.QueryRow(ctx, findStateVersionStateByID, id) var state []byte err := row.Scan(&state) @@ -198,17 +199,17 @@ OFFSET $2::int ` type FindStateVersionsByWorkspaceIDParams struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID Offset pgtype.Int4 Limit pgtype.Int4 } type FindStateVersionsByWorkspaceIDRow struct { - StateVersionID pgtype.Text + StateVersionID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte - WorkspaceID pgtype.Text + WorkspaceID resource.ID Status pgtype.Text StateVersionOutputs []StateVersionOutput } @@ -260,12 +261,12 @@ INSERT INTO state_versions ( ` type InsertStateVersionParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz Serial pgtype.Int4 State []byte Status pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID } func (q *Queries) InsertStateVersion(ctx context.Context, arg InsertStateVersionParams) error { @@ -288,7 +289,7 @@ WHERE state_version_id = $2 type UpdateStateParams struct { State []byte - StateVersionID pgtype.Text + StateVersionID resource.ID } func (q *Queries) UpdateState(ctx context.Context, arg UpdateStateParams) error { diff --git a/internal/sql/sqlc/state_version_output.sql.go b/internal/sql/sqlc/state_version_output.sql.go index c25420541..7a6c30422 100644 --- a/internal/sql/sqlc/state_version_output.sql.go +++ b/internal/sql/sqlc/state_version_output.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const findStateVersionOutputByID = `-- name: FindStateVersionOutputByID :one @@ -17,7 +18,7 @@ FROM state_version_outputs WHERE state_version_output_id = $1 ` -func (q *Queries) FindStateVersionOutputByID(ctx context.Context, id pgtype.Text) (StateVersionOutput, error) { +func (q *Queries) FindStateVersionOutputByID(ctx context.Context, id resource.ID) (StateVersionOutput, error) { row := q.db.QueryRow(ctx, findStateVersionOutputByID, id) var i StateVersionOutput err := row.Scan( @@ -50,12 +51,12 @@ INSERT INTO state_version_outputs ( ` type InsertStateVersionOutputParams struct { - ID pgtype.Text + ID resource.ID Name pgtype.Text Sensitive pgtype.Bool Type pgtype.Text Value []byte - StateVersionID pgtype.Text + StateVersionID resource.ID } func (q *Queries) InsertStateVersionOutput(ctx context.Context, arg InsertStateVersionOutputParams) error { diff --git a/internal/sql/sqlc/tags.sql.go b/internal/sql/sqlc/tags.sql.go index 7e71a1032..567c57564 100644 --- a/internal/sql/sqlc/tags.sql.go +++ b/internal/sql/sqlc/tags.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countTags = `-- name: CountTags :one @@ -30,7 +31,7 @@ FROM workspace_tags wt WHERE wt.workspace_id = $1 ` -func (q *Queries) CountWorkspaceTags(ctx context.Context, workspaceID pgtype.Text) (int64, error) { +func (q *Queries) CountWorkspaceTags(ctx context.Context, workspaceID resource.ID) (int64, error) { row := q.db.QueryRow(ctx, countWorkspaceTags, workspaceID) var count int64 err := row.Scan(&count) @@ -66,13 +67,13 @@ RETURNING tag_id ` type DeleteWorkspaceTagParams struct { - WorkspaceID pgtype.Text - TagID pgtype.Text + WorkspaceID resource.ID + TagID resource.ID } -func (q *Queries) DeleteWorkspaceTag(ctx context.Context, arg DeleteWorkspaceTagParams) (pgtype.Text, error) { +func (q *Queries) DeleteWorkspaceTag(ctx context.Context, arg DeleteWorkspaceTagParams) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteWorkspaceTag, arg.WorkspaceID, arg.TagID) - var tag_id pgtype.Text + var tag_id resource.ID err := row.Scan(&tag_id) return tag_id, err } @@ -219,7 +220,7 @@ OFFSET $2::int ` type FindWorkspaceTagsParams struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID Offset pgtype.Int4 Limit pgtype.Int4 } @@ -292,13 +293,13 @@ RETURNING tag_id ` type InsertWorkspaceTagParams struct { - TagID pgtype.Text - WorkspaceID pgtype.Text + TagID resource.ID + WorkspaceID resource.ID } -func (q *Queries) InsertWorkspaceTag(ctx context.Context, arg InsertWorkspaceTagParams) (pgtype.Text, error) { +func (q *Queries) InsertWorkspaceTag(ctx context.Context, arg InsertWorkspaceTagParams) (resource.ID, error) { row := q.db.QueryRow(ctx, insertWorkspaceTag, arg.TagID, arg.WorkspaceID) - var tag_id pgtype.Text + var tag_id resource.ID err := row.Scan(&tag_id) return tag_id, err } @@ -315,13 +316,13 @@ RETURNING tag_id ` type InsertWorkspaceTagByNameParams struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID TagName pgtype.Text } -func (q *Queries) InsertWorkspaceTagByName(ctx context.Context, arg InsertWorkspaceTagByNameParams) (pgtype.Text, error) { +func (q *Queries) InsertWorkspaceTagByName(ctx context.Context, arg InsertWorkspaceTagByNameParams) (resource.ID, error) { row := q.db.QueryRow(ctx, insertWorkspaceTagByName, arg.WorkspaceID, arg.TagName) - var tag_id pgtype.Text + var tag_id resource.ID err := row.Scan(&tag_id) return tag_id, err } diff --git a/internal/sql/sqlc/team.sql.go b/internal/sql/sqlc/team.sql.go index 8f33afaa8..fa200e76f 100644 --- a/internal/sql/sqlc/team.sql.go +++ b/internal/sql/sqlc/team.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteTeamByID = `-- name: DeleteTeamByID :one @@ -18,9 +19,9 @@ WHERE team_id = $1 RETURNING team_id ` -func (q *Queries) DeleteTeamByID(ctx context.Context, teamID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteTeamByID(ctx context.Context, teamID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteTeamByID, teamID) - var team_id pgtype.Text + var team_id resource.ID err := row.Scan(&team_id) return team_id, err } @@ -31,7 +32,7 @@ FROM teams WHERE team_id = $1 ` -func (q *Queries) FindTeamByID(ctx context.Context, teamID pgtype.Text) (Team, error) { +func (q *Queries) FindTeamByID(ctx context.Context, teamID resource.ID) (Team, error) { row := q.db.QueryRow(ctx, findTeamByID, teamID) var i Team err := row.Scan( @@ -58,7 +59,7 @@ WHERE team_id = $1 FOR UPDATE OF t ` -func (q *Queries) FindTeamByIDForUpdate(ctx context.Context, teamID pgtype.Text) (Team, error) { +func (q *Queries) FindTeamByIDForUpdate(ctx context.Context, teamID resource.ID) (Team, error) { row := q.db.QueryRow(ctx, findTeamByIDForUpdate, teamID) var i Team err := row.Scan( @@ -117,7 +118,7 @@ JOIN team_tokens tt USING (team_id) WHERE tt.team_token_id = $1 ` -func (q *Queries) FindTeamByTokenID(ctx context.Context, tokenID pgtype.Text) (Team, error) { +func (q *Queries) FindTeamByTokenID(ctx context.Context, tokenID resource.ID) (Team, error) { row := q.db.QueryRow(ctx, findTeamByTokenID, tokenID) var i Team err := row.Scan( @@ -207,7 +208,7 @@ INSERT INTO teams ( ` type InsertTeamParams struct { - ID pgtype.Text + ID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz OrganizationName pgtype.Text @@ -265,10 +266,10 @@ type UpdateTeamByIDParams struct { PermissionManageProviders pgtype.Bool PermissionManagePolicies pgtype.Bool PermissionManagePolicyOverrides pgtype.Bool - TeamID pgtype.Text + TeamID resource.ID } -func (q *Queries) UpdateTeamByID(ctx context.Context, arg UpdateTeamByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateTeamByID(ctx context.Context, arg UpdateTeamByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateTeamByID, arg.Name, arg.Visibility, @@ -281,7 +282,7 @@ func (q *Queries) UpdateTeamByID(ctx context.Context, arg UpdateTeamByIDParams) arg.PermissionManagePolicyOverrides, arg.TeamID, ) - var team_id pgtype.Text + var team_id resource.ID err := row.Scan(&team_id) return team_id, err } diff --git a/internal/sql/sqlc/team_membership.sql.go b/internal/sql/sqlc/team_membership.sql.go index 04773a3ee..a547f20c7 100644 --- a/internal/sql/sqlc/team_membership.sql.go +++ b/internal/sql/sqlc/team_membership.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteTeamMembership = `-- name: DeleteTeamMembership :many @@ -27,7 +28,7 @@ RETURNING tm.username ` type DeleteTeamMembershipParams struct { - TeamID pgtype.Text + TeamID resource.ID Usernames []pgtype.Text } @@ -64,7 +65,7 @@ RETURNING username ` type InsertTeamMembershipParams struct { - TeamID pgtype.Text + TeamID resource.ID Usernames []pgtype.Text } diff --git a/internal/sql/sqlc/team_token.sql.go b/internal/sql/sqlc/team_token.sql.go index 0f3aa68ed..d4370b029 100644 --- a/internal/sql/sqlc/team_token.sql.go +++ b/internal/sql/sqlc/team_token.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteTeamTokenByID = `-- name: DeleteTeamTokenByID :one @@ -18,9 +19,9 @@ WHERE team_id = $1 RETURNING team_token_id ` -func (q *Queries) DeleteTeamTokenByID(ctx context.Context, teamID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteTeamTokenByID(ctx context.Context, teamID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteTeamTokenByID, teamID) - var team_token_id pgtype.Text + var team_token_id resource.ID err := row.Scan(&team_token_id) return team_token_id, err } @@ -31,7 +32,7 @@ FROM team_tokens WHERE team_id = $1 ` -func (q *Queries) FindTeamTokensByID(ctx context.Context, teamID pgtype.Text) ([]TeamToken, error) { +func (q *Queries) FindTeamTokensByID(ctx context.Context, teamID resource.ID) ([]TeamToken, error) { rows, err := q.db.Query(ctx, findTeamTokensByID, teamID) if err != nil { return nil, err @@ -75,9 +76,9 @@ INSERT INTO team_tokens ( ` type InsertTeamTokenParams struct { - TeamTokenID pgtype.Text + TeamTokenID resource.ID CreatedAt pgtype.Timestamptz - TeamID pgtype.Text + TeamID resource.ID Expiry pgtype.Timestamptz } diff --git a/internal/sql/sqlc/token.sql.go b/internal/sql/sqlc/token.sql.go index 8d8ab29fa..be04b20d7 100644 --- a/internal/sql/sqlc/token.sql.go +++ b/internal/sql/sqlc/token.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteTokenByID = `-- name: DeleteTokenByID :one @@ -18,9 +19,9 @@ WHERE token_id = $1 RETURNING token_id ` -func (q *Queries) DeleteTokenByID(ctx context.Context, tokenID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteTokenByID(ctx context.Context, tokenID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteTokenByID, tokenID) - var token_id pgtype.Text + var token_id resource.ID err := row.Scan(&token_id) return token_id, err } @@ -31,7 +32,7 @@ FROM tokens WHERE token_id = $1 ` -func (q *Queries) FindTokenByID(ctx context.Context, tokenID pgtype.Text) (Token, error) { +func (q *Queries) FindTokenByID(ctx context.Context, tokenID resource.ID) (Token, error) { row := q.db.QueryRow(ctx, findTokenByID, tokenID) var i Token err := row.Scan( @@ -89,7 +90,7 @@ INSERT INTO tokens ( ` type InsertTokenParams struct { - TokenID pgtype.Text + TokenID resource.ID CreatedAt pgtype.Timestamptz Description pgtype.Text Username pgtype.Text diff --git a/internal/sql/sqlc/user.sql.go b/internal/sql/sqlc/user.sql.go index e5f9ee9a0..a7a07f308 100644 --- a/internal/sql/sqlc/user.sql.go +++ b/internal/sql/sqlc/user.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteUserByID = `-- name: DeleteUserByID :one @@ -18,9 +19,9 @@ WHERE user_id = $1 RETURNING user_id ` -func (q *Queries) DeleteUserByID(ctx context.Context, userID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteUserByID(ctx context.Context, userID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteUserByID, userID) - var user_id pgtype.Text + var user_id resource.ID err := row.Scan(&user_id) return user_id, err } @@ -32,9 +33,9 @@ WHERE username = $1 RETURNING user_id ` -func (q *Queries) DeleteUserByUsername(ctx context.Context, username pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteUserByUsername(ctx context.Context, username pgtype.Text) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteUserByUsername, username) - var user_id pgtype.Text + var user_id resource.ID err := row.Scan(&user_id) return user_id, err } @@ -55,7 +56,7 @@ WHERE t.token_id = $1 ` type FindUserByAuthenticationTokenIDRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -63,7 +64,7 @@ type FindUserByAuthenticationTokenIDRow struct { Teams []Team } -func (q *Queries) FindUserByAuthenticationTokenID(ctx context.Context, tokenID pgtype.Text) (FindUserByAuthenticationTokenIDRow, error) { +func (q *Queries) FindUserByAuthenticationTokenID(ctx context.Context, tokenID resource.ID) (FindUserByAuthenticationTokenIDRow, error) { row := q.db.QueryRow(ctx, findUserByAuthenticationTokenID, tokenID) var i FindUserByAuthenticationTokenIDRow err := row.Scan( @@ -92,7 +93,7 @@ WHERE u.user_id = $1 ` type FindUserByIDRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -100,7 +101,7 @@ type FindUserByIDRow struct { Teams []Team } -func (q *Queries) FindUserByID(ctx context.Context, userID pgtype.Text) (FindUserByIDRow, error) { +func (q *Queries) FindUserByID(ctx context.Context, userID resource.ID) (FindUserByIDRow, error) { row := q.db.QueryRow(ctx, findUserByID, userID) var i FindUserByIDRow err := row.Scan( @@ -129,7 +130,7 @@ WHERE u.username = $1 ` type FindUserByUsernameRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -165,7 +166,7 @@ FROM users u ` type FindUsersRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -218,7 +219,7 @@ GROUP BY u.user_id ` type FindUsersByOrganizationRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -271,7 +272,7 @@ GROUP BY u.user_id ` type FindUsersByTeamIDRow struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -279,7 +280,7 @@ type FindUsersByTeamIDRow struct { Teams []Team } -func (q *Queries) FindUsersByTeamID(ctx context.Context, teamID pgtype.Text) ([]FindUsersByTeamIDRow, error) { +func (q *Queries) FindUsersByTeamID(ctx context.Context, teamID resource.ID) ([]FindUsersByTeamIDRow, error) { rows, err := q.db.Query(ctx, findUsersByTeamID, teamID) if err != nil { return nil, err @@ -321,7 +322,7 @@ INSERT INTO users ( ` type InsertUserParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz Username pgtype.Text diff --git a/internal/sql/sqlc/variable.sql.go b/internal/sql/sqlc/variable.sql.go index 9fc0c51f7..9a828f520 100644 --- a/internal/sql/sqlc/variable.sql.go +++ b/internal/sql/sqlc/variable.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteVariableByID = `-- name: DeleteVariableByID :one @@ -18,7 +19,7 @@ WHERE variable_id = $1 RETURNING variable_id, key, value, description, category, sensitive, hcl, version_id ` -func (q *Queries) DeleteVariableByID(ctx context.Context, variableID pgtype.Text) (Variable, error) { +func (q *Queries) DeleteVariableByID(ctx context.Context, variableID resource.ID) (Variable, error) { row := q.db.QueryRow(ctx, deleteVariableByID, variableID) var i Variable err := row.Scan( @@ -40,7 +41,7 @@ FROM variables WHERE variable_id = $1 ` -func (q *Queries) FindVariable(ctx context.Context, variableID pgtype.Text) (Variable, error) { +func (q *Queries) FindVariable(ctx context.Context, variableID resource.ID) (Variable, error) { row := q.db.QueryRow(ctx, findVariable, variableID) var i Variable err := row.Scan( @@ -79,7 +80,7 @@ INSERT INTO variables ( ` type InsertVariableParams struct { - VariableID pgtype.Text + VariableID resource.ID Key pgtype.Text Value pgtype.Text Description pgtype.Text @@ -125,10 +126,10 @@ type UpdateVariableByIDParams struct { Sensitive pgtype.Bool VersionID pgtype.Text HCL pgtype.Bool - VariableID pgtype.Text + VariableID resource.ID } -func (q *Queries) UpdateVariableByID(ctx context.Context, arg UpdateVariableByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateVariableByID(ctx context.Context, arg UpdateVariableByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateVariableByID, arg.Key, arg.Value, @@ -139,7 +140,7 @@ func (q *Queries) UpdateVariableByID(ctx context.Context, arg UpdateVariableByID arg.HCL, arg.VariableID, ) - var variable_id pgtype.Text + var variable_id resource.ID err := row.Scan(&variable_id) return variable_id, err } diff --git a/internal/sql/sqlc/variable_set.sql.go b/internal/sql/sqlc/variable_set.sql.go index 61b69ecc0..7ed6f18b7 100644 --- a/internal/sql/sqlc/variable_set.sql.go +++ b/internal/sql/sqlc/variable_set.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteVariableSetByID = `-- name: DeleteVariableSetByID :one @@ -18,7 +19,7 @@ WHERE variable_set_id = $1 RETURNING variable_set_id, global, name, description, organization_name ` -func (q *Queries) DeleteVariableSetByID(ctx context.Context, variableSetID pgtype.Text) (VariableSet, error) { +func (q *Queries) DeleteVariableSetByID(ctx context.Context, variableSetID resource.ID) (VariableSet, error) { row := q.db.QueryRow(ctx, deleteVariableSetByID, variableSetID) var i VariableSet err := row.Scan( @@ -40,8 +41,8 @@ RETURNING variable_set_id, variable_id ` type DeleteVariableSetVariableParams struct { - VariableSetID pgtype.Text - VariableID pgtype.Text + VariableSetID resource.ID + VariableID resource.ID } func (q *Queries) DeleteVariableSetVariable(ctx context.Context, arg DeleteVariableSetVariableParams) (VariableSetVariable, error) { @@ -60,8 +61,8 @@ RETURNING variable_set_id, workspace_id ` type DeleteVariableSetWorkspaceParams struct { - VariableSetID pgtype.Text - WorkspaceID pgtype.Text + VariableSetID resource.ID + WorkspaceID resource.ID } func (q *Queries) DeleteVariableSetWorkspace(ctx context.Context, arg DeleteVariableSetWorkspaceParams) (VariableSetWorkspace, error) { @@ -77,7 +78,7 @@ FROM variable_set_workspaces WHERE variable_set_id = $1 ` -func (q *Queries) DeleteVariableSetWorkspaces(ctx context.Context, variableSetID pgtype.Text) error { +func (q *Queries) DeleteVariableSetWorkspaces(ctx context.Context, variableSetID resource.ID) error { _, err := q.db.Exec(ctx, deleteVariableSetWorkspaces, variableSetID) return err } @@ -101,7 +102,7 @@ WHERE vs.variable_set_id = $1 ` type FindVariableSetBySetIDRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -110,7 +111,7 @@ type FindVariableSetBySetIDRow struct { WorkspaceIds []pgtype.Text } -func (q *Queries) FindVariableSetBySetID(ctx context.Context, variableSetID pgtype.Text) (FindVariableSetBySetIDRow, error) { +func (q *Queries) FindVariableSetBySetID(ctx context.Context, variableSetID resource.ID) (FindVariableSetBySetIDRow, error) { row := q.db.QueryRow(ctx, findVariableSetBySetID, variableSetID) var i FindVariableSetBySetIDRow err := row.Scan( @@ -145,7 +146,7 @@ WHERE vsv.variable_id = $1 ` type FindVariableSetByVariableIDRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -154,7 +155,7 @@ type FindVariableSetByVariableIDRow struct { WorkspaceIds []pgtype.Text } -func (q *Queries) FindVariableSetByVariableID(ctx context.Context, variableID pgtype.Text) (FindVariableSetByVariableIDRow, error) { +func (q *Queries) FindVariableSetByVariableID(ctx context.Context, variableID resource.ID) (FindVariableSetByVariableIDRow, error) { row := q.db.QueryRow(ctx, findVariableSetByVariableID, variableID) var i FindVariableSetByVariableIDRow err := row.Scan( @@ -189,7 +190,7 @@ FOR UPDATE OF vs ` type FindVariableSetForUpdateRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -198,7 +199,7 @@ type FindVariableSetForUpdateRow struct { WorkspaceIds []pgtype.Text } -func (q *Queries) FindVariableSetForUpdate(ctx context.Context, variableSetID pgtype.Text) (FindVariableSetForUpdateRow, error) { +func (q *Queries) FindVariableSetForUpdate(ctx context.Context, variableSetID resource.ID) (FindVariableSetForUpdateRow, error) { row := q.db.QueryRow(ctx, findVariableSetForUpdate, variableSetID) var i FindVariableSetForUpdateRow err := row.Scan( @@ -232,7 +233,7 @@ WHERE organization_name = $1 ` type FindVariableSetsByOrganizationRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -307,7 +308,7 @@ AND w.workspace_id = $1 ` type FindVariableSetsByWorkspaceRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -316,7 +317,7 @@ type FindVariableSetsByWorkspaceRow struct { WorkspaceIds []pgtype.Text } -func (q *Queries) FindVariableSetsByWorkspace(ctx context.Context, workspaceID pgtype.Text) ([]FindVariableSetsByWorkspaceRow, error) { +func (q *Queries) FindVariableSetsByWorkspace(ctx context.Context, workspaceID resource.ID) ([]FindVariableSetsByWorkspaceRow, error) { rows, err := q.db.Query(ctx, findVariableSetsByWorkspace, workspaceID) if err != nil { return nil, err @@ -361,7 +362,7 @@ INSERT INTO variable_sets ( ` type InsertVariableSetParams struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -390,8 +391,8 @@ INSERT INTO variable_set_variables ( ` type InsertVariableSetVariableParams struct { - VariableSetID pgtype.Text - VariableID pgtype.Text + VariableSetID resource.ID + VariableID resource.ID } func (q *Queries) InsertVariableSetVariable(ctx context.Context, arg InsertVariableSetVariableParams) error { @@ -410,8 +411,8 @@ INSERT INTO variable_set_workspaces ( ` type InsertVariableSetWorkspaceParams struct { - VariableSetID pgtype.Text - WorkspaceID pgtype.Text + VariableSetID resource.ID + WorkspaceID resource.ID } func (q *Queries) InsertVariableSetWorkspace(ctx context.Context, arg InsertVariableSetWorkspaceParams) error { @@ -433,17 +434,17 @@ type UpdateVariableSetByIDParams struct { Global pgtype.Bool Name pgtype.Text Description pgtype.Text - VariableSetID pgtype.Text + VariableSetID resource.ID } -func (q *Queries) UpdateVariableSetByID(ctx context.Context, arg UpdateVariableSetByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateVariableSetByID(ctx context.Context, arg UpdateVariableSetByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateVariableSetByID, arg.Global, arg.Name, arg.Description, arg.VariableSetID, ) - var variable_set_id pgtype.Text + var variable_set_id resource.ID err := row.Scan(&variable_set_id) return variable_set_id, err } diff --git a/internal/sql/sqlc/vcs_provider.sql.go b/internal/sql/sqlc/vcs_provider.sql.go index ac27a4cf1..78f9618a5 100644 --- a/internal/sql/sqlc/vcs_provider.sql.go +++ b/internal/sql/sqlc/vcs_provider.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteVCSProviderByID = `-- name: DeleteVCSProviderByID :one @@ -18,9 +19,9 @@ WHERE vcs_provider_id = $1 RETURNING vcs_provider_id ` -func (q *Queries) DeleteVCSProviderByID(ctx context.Context, vcsProviderID pgtype.Text) (pgtype.Text, error) { +func (q *Queries) DeleteVCSProviderByID(ctx context.Context, vcsProviderID resource.ID) (resource.ID, error) { row := q.db.QueryRow(ctx, deleteVCSProviderByID, vcsProviderID) - var vcs_provider_id pgtype.Text + var vcs_provider_id resource.ID err := row.Scan(&vcs_provider_id) return vcs_provider_id, err } @@ -36,7 +37,7 @@ WHERE v.vcs_provider_id = $1 ` type FindVCSProviderRow struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -47,7 +48,7 @@ type FindVCSProviderRow struct { GithubAppInstall *GithubAppInstall } -func (q *Queries) FindVCSProvider(ctx context.Context, vcsProviderID pgtype.Text) (FindVCSProviderRow, error) { +func (q *Queries) FindVCSProvider(ctx context.Context, vcsProviderID resource.ID) (FindVCSProviderRow, error) { row := q.db.QueryRow(ctx, findVCSProvider, vcsProviderID) var i FindVCSProviderRow err := row.Scan( @@ -76,7 +77,7 @@ FOR UPDATE OF v ` type FindVCSProviderForUpdateRow struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -87,7 +88,7 @@ type FindVCSProviderForUpdateRow struct { GithubAppInstall *GithubAppInstall } -func (q *Queries) FindVCSProviderForUpdate(ctx context.Context, vcsProviderID pgtype.Text) (FindVCSProviderForUpdateRow, error) { +func (q *Queries) FindVCSProviderForUpdate(ctx context.Context, vcsProviderID resource.ID) (FindVCSProviderForUpdateRow, error) { row := q.db.QueryRow(ctx, findVCSProviderForUpdate, vcsProviderID) var i FindVCSProviderForUpdateRow err := row.Scan( @@ -114,7 +115,7 @@ LEFT JOIN (github_app_installs gi JOIN github_apps ga USING (github_app_id)) USI ` type FindVCSProvidersRow struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -166,7 +167,7 @@ WHERE gi.install_id = $1 ` type FindVCSProvidersByGithubAppInstallIDRow struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -218,7 +219,7 @@ WHERE v.organization_name = $1 ` type FindVCSProvidersByOrganizationRow struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID Token pgtype.Text CreatedAt pgtype.Timestamptz Name pgtype.Text @@ -280,7 +281,7 @@ INSERT INTO vcs_providers ( ` type InsertVCSProviderParams struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID CreatedAt pgtype.Timestamptz Name pgtype.Text VCSKind pgtype.Text @@ -312,7 +313,7 @@ RETURNING vcs_provider_id, token, created_at, name, vcs_kind, organization_name, type UpdateVCSProviderParams struct { Name pgtype.Text Token pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID } func (q *Queries) UpdateVCSProvider(ctx context.Context, arg UpdateVCSProviderParams) (VCSProvider, error) { diff --git a/internal/sql/sqlc/workspace.sql.go b/internal/sql/sqlc/workspace.sql.go index 65894a5c6..3dfc59296 100644 --- a/internal/sql/sqlc/workspace.sql.go +++ b/internal/sql/sqlc/workspace.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const countWorkspaces = `-- name: CountWorkspaces :one @@ -68,7 +69,7 @@ FROM workspaces WHERE workspace_id = $1 ` -func (q *Queries) DeleteWorkspaceByID(ctx context.Context, workspaceID pgtype.Text) error { +func (q *Queries) DeleteWorkspaceByID(ctx context.Context, workspaceID resource.ID) error { _, err := q.db.Exec(ctx, deleteWorkspaceByID, workspaceID) return err } @@ -92,7 +93,7 @@ WHERE w.workspace_id = $1 ` type FindWorkspaceByIDRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -112,23 +113,23 @@ type FindWorkspaceByIDRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } -func (q *Queries) FindWorkspaceByID(ctx context.Context, id pgtype.Text) (FindWorkspaceByIDRow, error) { +func (q *Queries) FindWorkspaceByID(ctx context.Context, id resource.ID) (FindWorkspaceByIDRow, error) { row := q.db.QueryRow(ctx, findWorkspaceByID, id) var i FindWorkspaceByIDRow err := row.Scan( @@ -190,7 +191,7 @@ FOR UPDATE OF w ` type FindWorkspaceByIDForUpdateRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -210,23 +211,23 @@ type FindWorkspaceByIDForUpdateRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } -func (q *Queries) FindWorkspaceByIDForUpdate(ctx context.Context, id pgtype.Text) (FindWorkspaceByIDForUpdateRow, error) { +func (q *Queries) FindWorkspaceByIDForUpdate(ctx context.Context, id resource.ID) (FindWorkspaceByIDForUpdateRow, error) { row := q.db.QueryRow(ctx, findWorkspaceByIDForUpdate, id) var i FindWorkspaceByIDForUpdateRow err := row.Scan( @@ -294,7 +295,7 @@ type FindWorkspaceByNameParams struct { } type FindWorkspaceByNameRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -314,19 +315,19 @@ type FindWorkspaceByNameRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } @@ -407,7 +408,7 @@ type FindWorkspacesParams struct { } type FindWorkspacesRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -427,19 +428,19 @@ type FindWorkspacesRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } @@ -524,12 +525,12 @@ AND rc.repo_path = $2 ` type FindWorkspacesByConnectionParams struct { - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } type FindWorkspacesByConnectionRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -549,19 +550,19 @@ type FindWorkspacesByConnectionRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } @@ -654,7 +655,7 @@ type FindWorkspacesByUsernameParams struct { } type FindWorkspacesByUsernameRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -674,19 +675,19 @@ type FindWorkspacesByUsernameRow struct { TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } @@ -809,10 +810,10 @@ INSERT INTO workspaces ( ` type InsertWorkspaceParams struct { - ID pgtype.Text + ID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AllowCLIApply pgtype.Bool AllowDestroyPlan pgtype.Bool AutoApply pgtype.Bool @@ -895,7 +896,7 @@ RETURNING workspace_id ` type UpdateWorkspaceByIDParams struct { - AgentPoolID pgtype.Text + AgentPoolID *resource.ID AllowDestroyPlan pgtype.Bool AllowCLIApply pgtype.Bool AutoApply pgtype.Bool @@ -913,10 +914,10 @@ type UpdateWorkspaceByIDParams struct { VCSTagsRegex pgtype.Text WorkingDirectory pgtype.Text UpdatedAt pgtype.Timestamptz - ID pgtype.Text + ID resource.ID } -func (q *Queries) UpdateWorkspaceByID(ctx context.Context, arg UpdateWorkspaceByIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateWorkspaceByID(ctx context.Context, arg UpdateWorkspaceByIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateWorkspaceByID, arg.AgentPoolID, arg.AllowDestroyPlan, @@ -938,7 +939,7 @@ func (q *Queries) UpdateWorkspaceByID(ctx context.Context, arg UpdateWorkspaceBy arg.UpdatedAt, arg.ID, ) - var workspace_id pgtype.Text + var workspace_id resource.ID err := row.Scan(&workspace_id) return workspace_id, err } @@ -952,12 +953,12 @@ RETURNING workspace_id type UpdateWorkspaceCurrentStateVersionIDParams struct { StateVersionID pgtype.Text - WorkspaceID pgtype.Text + WorkspaceID resource.ID } -func (q *Queries) UpdateWorkspaceCurrentStateVersionID(ctx context.Context, arg UpdateWorkspaceCurrentStateVersionIDParams) (pgtype.Text, error) { +func (q *Queries) UpdateWorkspaceCurrentStateVersionID(ctx context.Context, arg UpdateWorkspaceCurrentStateVersionIDParams) (resource.ID, error) { row := q.db.QueryRow(ctx, updateWorkspaceCurrentStateVersionID, arg.StateVersionID, arg.WorkspaceID) - var workspace_id pgtype.Text + var workspace_id resource.ID err := row.Scan(&workspace_id) return workspace_id, err } @@ -969,8 +970,8 @@ WHERE workspace_id = $2 ` type UpdateWorkspaceLatestRunParams struct { - RunID pgtype.Text - WorkspaceID pgtype.Text + RunID *resource.ID + WorkspaceID resource.ID } func (q *Queries) UpdateWorkspaceLatestRun(ctx context.Context, arg UpdateWorkspaceLatestRunParams) error { @@ -987,9 +988,9 @@ WHERE workspace_id = $3 ` type UpdateWorkspaceLockByIDParams struct { - UserID pgtype.Text - RunID pgtype.Text - WorkspaceID pgtype.Text + UserID *resource.ID + RunID *resource.ID + WorkspaceID resource.ID } func (q *Queries) UpdateWorkspaceLockByID(ctx context.Context, arg UpdateWorkspaceLockByIDParams) error { diff --git a/internal/sql/sqlc/workspace_permission.sql.go b/internal/sql/sqlc/workspace_permission.sql.go index d8e849d1a..fd2f54337 100644 --- a/internal/sql/sqlc/workspace_permission.sql.go +++ b/internal/sql/sqlc/workspace_permission.sql.go @@ -9,6 +9,7 @@ import ( "context" "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteWorkspacePermissionByID = `-- name: DeleteWorkspacePermissionByID :exec @@ -19,8 +20,8 @@ AND team_id = $2 ` type DeleteWorkspacePermissionByIDParams struct { - WorkspaceID pgtype.Text - TeamID pgtype.Text + WorkspaceID resource.ID + TeamID resource.ID } func (q *Queries) DeleteWorkspacePermissionByID(ctx context.Context, arg DeleteWorkspacePermissionByIDParams) error { @@ -34,7 +35,7 @@ FROM workspace_permissions WHERE workspace_id = $1 ` -func (q *Queries) FindWorkspacePermissionsByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) ([]WorkspacePermission, error) { +func (q *Queries) FindWorkspacePermissionsByWorkspaceID(ctx context.Context, workspaceID resource.ID) ([]WorkspacePermission, error) { rows, err := q.db.Query(ctx, findWorkspacePermissionsByWorkspaceID, workspaceID) if err != nil { return nil, err @@ -67,8 +68,8 @@ INSERT INTO workspace_permissions ( ` type UpsertWorkspacePermissionParams struct { - WorkspaceID pgtype.Text - TeamID pgtype.Text + WorkspaceID resource.ID + TeamID resource.ID Role pgtype.Text } diff --git a/internal/sql/sqlc/workspace_variable.sql.go b/internal/sql/sqlc/workspace_variable.sql.go index 771f83be2..f70983615 100644 --- a/internal/sql/sqlc/workspace_variable.sql.go +++ b/internal/sql/sqlc/workspace_variable.sql.go @@ -8,7 +8,7 @@ package sqlc import ( "context" - "github.com/jackc/pgx/v5/pgtype" + "github.com/leg100/otf/internal/resource" ) const deleteWorkspaceVariableByID = `-- name: DeleteWorkspaceVariableByID :one @@ -19,11 +19,11 @@ RETURNING wv.workspace_id, (v.*)::"variables" AS variable ` type DeleteWorkspaceVariableByIDRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID Variable Variable } -func (q *Queries) DeleteWorkspaceVariableByID(ctx context.Context, variableID pgtype.Text) (DeleteWorkspaceVariableByIDRow, error) { +func (q *Queries) DeleteWorkspaceVariableByID(ctx context.Context, variableID resource.ID) (DeleteWorkspaceVariableByIDRow, error) { row := q.db.QueryRow(ctx, deleteWorkspaceVariableByID, variableID) var i DeleteWorkspaceVariableByIDRow err := row.Scan(&i.WorkspaceID, &i.Variable) @@ -40,11 +40,11 @@ WHERE v.variable_id = $1 ` type FindWorkspaceVariableByVariableIDRow struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID Variable Variable } -func (q *Queries) FindWorkspaceVariableByVariableID(ctx context.Context, variableID pgtype.Text) (FindWorkspaceVariableByVariableIDRow, error) { +func (q *Queries) FindWorkspaceVariableByVariableID(ctx context.Context, variableID resource.ID) (FindWorkspaceVariableByVariableIDRow, error) { row := q.db.QueryRow(ctx, findWorkspaceVariableByVariableID, variableID) var i FindWorkspaceVariableByVariableIDRow err := row.Scan(&i.WorkspaceID, &i.Variable) @@ -58,7 +58,7 @@ JOIN variables v USING (variable_id) WHERE workspace_id = $1 ` -func (q *Queries) FindWorkspaceVariablesByWorkspaceID(ctx context.Context, workspaceID pgtype.Text) ([]Variable, error) { +func (q *Queries) FindWorkspaceVariablesByWorkspaceID(ctx context.Context, workspaceID resource.ID) ([]Variable, error) { rows, err := q.db.Query(ctx, findWorkspaceVariablesByWorkspaceID, workspaceID) if err != nil { return nil, err @@ -98,8 +98,8 @@ INSERT INTO workspace_variables ( ` type InsertWorkspaceVariableParams struct { - VariableID pgtype.Text - WorkspaceID pgtype.Text + VariableID resource.ID + WorkspaceID resource.ID } func (q *Queries) InsertWorkspaceVariable(ctx context.Context, arg InsertWorkspaceVariableParams) error { diff --git a/internal/team/db.go b/internal/team/db.go index aa4113125..7d903038d 100644 --- a/internal/team/db.go +++ b/internal/team/db.go @@ -13,7 +13,7 @@ import ( // TeamRow represents the result of a database query for a team. type TeamRow struct { - TeamID pgtype.Text + TeamID resource.ID Name pgtype.Text CreatedAt pgtype.Timestamptz PermissionManageWorkspaces pgtype.Bool @@ -29,7 +29,7 @@ type TeamRow struct { func (row TeamRow) ToTeam() *Team { to := Team{ - ID: resource.ParseID(row.TeamID.String), + ID: row.TeamID, CreatedAt: row.CreatedAt.Time.UTC(), Name: row.Name.String, Organization: row.OrganizationName.String, @@ -57,7 +57,7 @@ type pgdb struct { func (db *pgdb) createTeam(ctx context.Context, team *Team) error { err := db.Querier(ctx).InsertTeam(ctx, sqlc.InsertTeamParams{ - ID: sql.ID(team.ID), + ID: team.ID, Name: sql.String(team.Name), CreatedAt: sql.Timestamptz(team.CreatedAt), OrganizationName: sql.String(team.Organization), @@ -79,7 +79,7 @@ func (db *pgdb) UpdateTeam(ctx context.Context, teamID resource.ID, fn func(*Tea var err error // retrieve team - result, err := q.FindTeamByIDForUpdate(ctx, sql.ID(teamID)) + result, err := q.FindTeamByIDForUpdate(ctx, teamID) if err != nil { return err } @@ -91,7 +91,7 @@ func (db *pgdb) UpdateTeam(ctx context.Context, teamID resource.ID, fn func(*Tea } // persist update _, err = q.UpdateTeamByID(ctx, sqlc.UpdateTeamByIDParams{ - TeamID: sql.ID(teamID), + TeamID: teamID, Name: sql.String(team.Name), Visibility: sql.String(team.Visibility), SSOTeamID: sql.StringPtr(team.SSOTeamID), @@ -122,7 +122,7 @@ func (db *pgdb) getTeam(ctx context.Context, name, organization string) (*Team, } func (db *pgdb) getTeamByID(ctx context.Context, id resource.ID) (*Team, error) { - result, err := db.Querier(ctx).FindTeamByID(ctx, sql.ID(id)) + result, err := db.Querier(ctx).FindTeamByID(ctx, id) if err != nil { return nil, sql.Error(err) } @@ -130,7 +130,7 @@ func (db *pgdb) getTeamByID(ctx context.Context, id resource.ID) (*Team, error) } func (db *pgdb) getTeamByTokenID(ctx context.Context, tokenID resource.ID) (*Team, error) { - result, err := db.Querier(ctx).FindTeamByTokenID(ctx, sql.ID(tokenID)) + result, err := db.Querier(ctx).FindTeamByTokenID(ctx, tokenID) if err != nil { return nil, sql.Error(err) } @@ -151,7 +151,7 @@ func (db *pgdb) listTeams(ctx context.Context, organization string) ([]*Team, er } func (db *pgdb) deleteTeam(ctx context.Context, teamID resource.ID) error { - _, err := db.Querier(ctx).DeleteTeamByID(ctx, sql.ID(teamID)) + _, err := db.Querier(ctx).DeleteTeamByID(ctx, teamID) if err != nil { return sql.Error(err) } @@ -164,8 +164,8 @@ func (db *pgdb) deleteTeam(ctx context.Context, teamID resource.ID) error { func (db *pgdb) createTeamToken(ctx context.Context, token *Token) error { err := db.Querier(ctx).InsertTeamToken(ctx, sqlc.InsertTeamTokenParams{ - TeamTokenID: sql.ID(token.ID), - TeamID: sql.ID(token.TeamID), + TeamTokenID: token.ID, + TeamID: token.TeamID, CreatedAt: sql.Timestamptz(token.CreatedAt), Expiry: sql.TimestamptzPtr(token.Expiry), }) @@ -174,7 +174,7 @@ func (db *pgdb) createTeamToken(ctx context.Context, token *Token) error { func (db *pgdb) getTeamTokenByTeamID(ctx context.Context, teamID resource.ID) (*Token, error) { // query only returns 0 or 1 tokens - result, err := db.Querier(ctx).FindTeamTokensByID(ctx, sql.ID(teamID)) + result, err := db.Querier(ctx).FindTeamTokensByID(ctx, teamID) if err != nil { return nil, err } @@ -182,9 +182,9 @@ func (db *pgdb) getTeamTokenByTeamID(ctx context.Context, teamID resource.ID) (* return nil, nil } ot := &Token{ - ID: resource.ParseID(result[0].TeamTokenID.String), + ID: result[0].TeamTokenID, CreatedAt: result[0].CreatedAt.Time.UTC(), - TeamID: resource.ParseID(result[0].TeamID.String), + TeamID: result[0].TeamID, } if result[0].Expiry.Valid { ot.Expiry = internal.Time(result[0].Expiry.Time.UTC()) @@ -193,7 +193,7 @@ func (db *pgdb) getTeamTokenByTeamID(ctx context.Context, teamID resource.ID) (* } func (db *pgdb) deleteTeamToken(ctx context.Context, teamID resource.ID) error { - _, err := db.Querier(ctx).DeleteTeamTokenByID(ctx, sql.ID(teamID)) + _, err := db.Querier(ctx).DeleteTeamTokenByID(ctx, teamID) if err != nil { return sql.Error(err) } diff --git a/internal/user/db.go b/internal/user/db.go index 3f7914633..ce06fa1b9 100644 --- a/internal/user/db.go +++ b/internal/user/db.go @@ -14,7 +14,7 @@ import ( // dbresult represents the result of a database query for a user. type dbresult struct { - UserID pgtype.Text + UserID resource.ID Username pgtype.Text CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz @@ -24,7 +24,7 @@ type dbresult struct { func (result dbresult) toUser() *User { user := User{ - ID: resource.ParseID(result.UserID.String), + ID: result.UserID, CreatedAt: result.CreatedAt.Time.UTC(), UpdatedAt: result.UpdatedAt.Time.UTC(), Username: result.Username.String, @@ -46,7 +46,7 @@ type pgdb struct { func (db *pgdb) CreateUser(ctx context.Context, user *User) error { return db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { err := q.InsertUser(ctx, sqlc.InsertUserParams{ - ID: sql.ID(user.ID), + ID: user.ID, Username: sql.String(user.Username), CreatedAt: sql.Timestamptz(user.CreatedAt), UpdatedAt: sql.Timestamptz(user.UpdatedAt), @@ -56,7 +56,7 @@ func (db *pgdb) CreateUser(ctx context.Context, user *User) error { } for _, team := range user.Teams { _, err = q.InsertTeamMembership(ctx, sqlc.InsertTeamMembershipParams{ - TeamID: sql.ID(team.ID), + TeamID: team.ID, Usernames: sql.StringArray([]string{user.Username}), }) if err != nil { @@ -92,7 +92,7 @@ func (db *pgdb) listOrganizationUsers(ctx context.Context, organization string) } func (db *pgdb) listTeamUsers(ctx context.Context, teamID resource.ID) ([]*User, error) { - result, err := db.Querier(ctx).FindUsersByTeamID(ctx, sql.ID(teamID)) + result, err := db.Querier(ctx).FindUsersByTeamID(ctx, teamID) if err != nil { return nil, err } @@ -107,7 +107,7 @@ func (db *pgdb) listTeamUsers(ctx context.Context, teamID resource.ID) ([]*User, // getUser retrieves a user from the DB, along with its sessions. func (db *pgdb) getUser(ctx context.Context, spec UserSpec) (*User, error) { if spec.UserID != nil { - result, err := db.Querier(ctx).FindUserByID(ctx, sql.ID(*spec.UserID)) + result, err := db.Querier(ctx).FindUserByID(ctx, *spec.UserID) if err != nil { return nil, err } @@ -119,7 +119,7 @@ func (db *pgdb) getUser(ctx context.Context, spec UserSpec) (*User, error) { } return dbresult(result).toUser(), nil } else if spec.AuthenticationTokenID != nil { - result, err := db.Querier(ctx).FindUserByAuthenticationTokenID(ctx, sql.ID(*spec.AuthenticationTokenID)) + result, err := db.Querier(ctx).FindUserByAuthenticationTokenID(ctx, *spec.AuthenticationTokenID) if err != nil { return nil, sql.Error(err) } @@ -132,7 +132,7 @@ func (db *pgdb) getUser(ctx context.Context, spec UserSpec) (*User, error) { func (db *pgdb) addTeamMembership(ctx context.Context, teamID resource.ID, usernames ...string) error { _, err := db.Querier(ctx).InsertTeamMembership(ctx, sqlc.InsertTeamMembershipParams{ Usernames: sql.StringArray(usernames), - TeamID: sql.ID(teamID), + TeamID: teamID, }) if err != nil { return sql.Error(err) @@ -143,7 +143,7 @@ func (db *pgdb) addTeamMembership(ctx context.Context, teamID resource.ID, usern func (db *pgdb) removeTeamMembership(ctx context.Context, teamID resource.ID, usernames ...string) error { _, err := db.Querier(ctx).DeleteTeamMembership(ctx, sqlc.DeleteTeamMembershipParams{ Usernames: sql.StringArray(usernames), - TeamID: sql.ID(teamID), + TeamID: teamID, }) if err != nil { return sql.Error(err) @@ -154,7 +154,7 @@ func (db *pgdb) removeTeamMembership(ctx context.Context, teamID resource.ID, us // DeleteUser deletes a user from the DB. func (db *pgdb) DeleteUser(ctx context.Context, spec UserSpec) error { if spec.UserID != nil { - _, err := db.Querier(ctx).DeleteUserByID(ctx, sql.ID(*spec.UserID)) + _, err := db.Querier(ctx).DeleteUserByID(ctx, *spec.UserID) if err != nil { return sql.Error(err) } @@ -216,7 +216,7 @@ func pgtextSliceDiff(a, b []pgtype.Text) []string { func (db *pgdb) createUserToken(ctx context.Context, token *UserToken) error { err := db.Querier(ctx).InsertToken(ctx, sqlc.InsertTokenParams{ - TokenID: sql.ID(token.ID), + TokenID: token.ID, Description: sql.String(token.Description), Username: sql.String(token.Username), CreatedAt: sql.Timestamptz(token.CreatedAt), @@ -232,7 +232,7 @@ func (db *pgdb) listUserTokens(ctx context.Context, username string) ([]*UserTok tokens := make([]*UserToken, len(result)) for i, row := range result { tokens[i] = &UserToken{ - ID: resource.ParseID(row.TokenID.String), + ID: row.TokenID, CreatedAt: row.CreatedAt.Time.UTC(), Description: row.Description.String, Username: row.Username.String, @@ -242,12 +242,12 @@ func (db *pgdb) listUserTokens(ctx context.Context, username string) ([]*UserTok } func (db *pgdb) getUserToken(ctx context.Context, id resource.ID) (*UserToken, error) { - row, err := db.Querier(ctx).FindTokenByID(ctx, sql.ID(id)) + row, err := db.Querier(ctx).FindTokenByID(ctx, id) if err != nil { return nil, sql.Error(err) } return &UserToken{ - ID: resource.ParseID(row.TokenID.String), + ID: row.TokenID, CreatedAt: row.CreatedAt.Time.UTC(), Description: row.Description.String, Username: row.Username.String, @@ -255,7 +255,7 @@ func (db *pgdb) getUserToken(ctx context.Context, id resource.ID) (*UserToken, e } func (db *pgdb) deleteUserToken(ctx context.Context, id resource.ID) error { - _, err := db.Querier(ctx).DeleteTokenByID(ctx, sql.ID(id)) + _, err := db.Querier(ctx).DeleteTokenByID(ctx, id) if err != nil { return sql.Error(err) } diff --git a/internal/variable/db.go b/internal/variable/db.go index f71a49d80..b154b6152 100644 --- a/internal/variable/db.go +++ b/internal/variable/db.go @@ -16,7 +16,7 @@ type ( } VariableRow struct { - VariableID pgtype.Text + VariableID resource.ID Key pgtype.Text Value pgtype.Text Description pgtype.Text @@ -27,7 +27,7 @@ type ( } VariableSetRow struct { - VariableSetID pgtype.Text + VariableSetID resource.ID Global pgtype.Bool Name pgtype.Text Description pgtype.Text @@ -39,7 +39,7 @@ type ( func (row VariableRow) convert() *Variable { return &Variable{ - ID: resource.ParseID(row.VariableID.String), + ID: row.VariableID, Key: row.Key.String, Value: row.Value.String, Description: row.Description.String, @@ -52,7 +52,7 @@ func (row VariableRow) convert() *Variable { func (row VariableSetRow) convert() *VariableSet { set := &VariableSet{ - ID: resource.ParseID(row.VariableSetID.String), + ID: row.VariableSetID, Global: row.Global.Bool, Description: row.Description.String, Name: row.Name.String, @@ -64,7 +64,7 @@ func (row VariableSetRow) convert() *VariableSet { } set.Workspaces = make([]resource.ID, len(row.WorkspaceIds)) for i, wid := range row.WorkspaceIds { - set.Workspaces[i] = resource.ParseID(wid.String) + set.Workspaces[i] = wid } return set } @@ -75,15 +75,15 @@ func (pdb *pgdb) createWorkspaceVariable(ctx context.Context, workspaceID resour return err } return q.InsertWorkspaceVariable(ctx, sqlc.InsertWorkspaceVariableParams{ - VariableID: sql.ID(v.ID), - WorkspaceID: sql.ID(workspaceID), + VariableID: v.ID, + WorkspaceID: workspaceID, }) }) return sql.Error(err) } func (pdb *pgdb) listWorkspaceVariables(ctx context.Context, workspaceID resource.ID) ([]*Variable, error) { - rows, err := pdb.Querier(ctx).FindWorkspaceVariablesByWorkspaceID(ctx, sql.ID(workspaceID)) + rows, err := pdb.Querier(ctx).FindWorkspaceVariablesByWorkspaceID(ctx, workspaceID) if err != nil { return nil, sql.Error(err) } @@ -96,32 +96,32 @@ func (pdb *pgdb) listWorkspaceVariables(ctx context.Context, workspaceID resourc } func (pdb *pgdb) getWorkspaceVariable(ctx context.Context, variableID resource.ID) (*WorkspaceVariable, error) { - row, err := pdb.Querier(ctx).FindWorkspaceVariableByVariableID(ctx, sql.ID(variableID)) + row, err := pdb.Querier(ctx).FindWorkspaceVariableByVariableID(ctx, variableID) if err != nil { return nil, sql.Error(err) } return &WorkspaceVariable{ - WorkspaceID: resource.ParseID(row.WorkspaceID.String), + WorkspaceID: row.WorkspaceID, Variable: VariableRow(row.Variable).convert(), }, nil } func (pdb *pgdb) deleteWorkspaceVariable(ctx context.Context, variableID resource.ID) (*WorkspaceVariable, error) { - row, err := pdb.Querier(ctx).DeleteWorkspaceVariableByID(ctx, sql.ID(variableID)) + row, err := pdb.Querier(ctx).DeleteWorkspaceVariableByID(ctx, variableID) if err != nil { return nil, sql.Error(err) } return &WorkspaceVariable{ - WorkspaceID: resource.ParseID(row.WorkspaceID.String), + WorkspaceID: row.WorkspaceID, Variable: VariableRow(row.Variable).convert(), }, nil } func (pdb *pgdb) createVariableSet(ctx context.Context, set *VariableSet) error { err := pdb.Querier(ctx).InsertVariableSet(ctx, sqlc.InsertVariableSetParams{ - VariableSetID: sql.ID(set.ID), + VariableSetID: set.ID, Name: sql.String(set.Name), Description: sql.String(set.Description), Global: sql.Bool(set.Global), @@ -136,7 +136,7 @@ func (pdb *pgdb) updateVariableSet(ctx context.Context, set *VariableSet) error Name: sql.String(set.Name), Description: sql.String(set.Description), Global: sql.Bool(set.Global), - VariableSetID: sql.ID(set.ID), + VariableSetID: set.ID, }) if err != nil { return err @@ -158,7 +158,7 @@ func (pdb *pgdb) updateVariableSet(ctx context.Context, set *VariableSet) error } func (pdb *pgdb) getVariableSet(ctx context.Context, setID resource.ID) (*VariableSet, error) { - row, err := pdb.Querier(ctx).FindVariableSetBySetID(ctx, sql.ID(setID)) + row, err := pdb.Querier(ctx).FindVariableSetBySetID(ctx, setID) if err != nil { return nil, sql.Error(err) } @@ -166,7 +166,7 @@ func (pdb *pgdb) getVariableSet(ctx context.Context, setID resource.ID) (*Variab } func (pdb *pgdb) getVariableSetByVariableID(ctx context.Context, variableID resource.ID) (*VariableSet, error) { - row, err := pdb.Querier(ctx).FindVariableSetByVariableID(ctx, sql.ID(variableID)) + row, err := pdb.Querier(ctx).FindVariableSetByVariableID(ctx, variableID) if err != nil { return nil, sql.Error(err) } @@ -187,7 +187,7 @@ func (pdb *pgdb) listVariableSets(ctx context.Context, organization string) ([]* } func (pdb *pgdb) listVariableSetsByWorkspace(ctx context.Context, workspaceID resource.ID) ([]*VariableSet, error) { - rows, err := pdb.Querier(ctx).FindVariableSetsByWorkspace(ctx, sql.ID(workspaceID)) + rows, err := pdb.Querier(ctx).FindVariableSetsByWorkspace(ctx, workspaceID) if err != nil { return nil, sql.Error(err) } @@ -200,7 +200,7 @@ func (pdb *pgdb) listVariableSetsByWorkspace(ctx context.Context, workspaceID re } func (pdb *pgdb) deleteVariableSet(ctx context.Context, setID resource.ID) error { - _, err := pdb.Querier(ctx).DeleteVariableSetByID(ctx, sql.ID(setID)) + _, err := pdb.Querier(ctx).DeleteVariableSetByID(ctx, setID) if err != nil { return sql.Error(err) } @@ -213,8 +213,8 @@ func (pdb *pgdb) addVariableToSet(ctx context.Context, setID resource.ID, v *Var return err } err := q.InsertVariableSetVariable(ctx, sqlc.InsertVariableSetVariableParams{ - VariableSetID: sql.ID(setID), - VariableID: sql.ID(v.ID), + VariableSetID: setID, + VariableID: v.ID, }) return err }) diff --git a/internal/workspace/db.go b/internal/workspace/db.go index 1fe398ea0..a8bccd12c 100644 --- a/internal/workspace/db.go +++ b/internal/workspace/db.go @@ -18,7 +18,7 @@ type ( // pgresult represents the result of a database query for a workspace. pgresult struct { - WorkspaceID pgtype.Text + WorkspaceID resource.ID CreatedAt pgtype.Timestamptz UpdatedAt pgtype.Timestamptz AllowDestroyPlan pgtype.Bool @@ -38,26 +38,26 @@ type ( TerraformVersion pgtype.Text TriggerPrefixes []pgtype.Text WorkingDirectory pgtype.Text - LockRunID pgtype.Text - LatestRunID pgtype.Text + LockRunID *resource.ID + LatestRunID *resource.ID OrganizationName pgtype.Text Branch pgtype.Text CurrentStateVersionID pgtype.Text TriggerPatterns []pgtype.Text VCSTagsRegex pgtype.Text AllowCLIApply pgtype.Bool - AgentPoolID pgtype.Text - LockUserID pgtype.Text + AgentPoolID *resource.ID + LockUserID *resource.ID Tags []pgtype.Text LatestRunStatus pgtype.Text - VCSProviderID pgtype.Text + VCSProviderID resource.ID RepoPath pgtype.Text } ) func (r pgresult) toWorkspace() (*Workspace, error) { ws := Workspace{ - ID: resource.ID{Kind: resource.WorkspaceKind, ID: r.WorkspaceID.String}, + ID: r.WorkspaceID, CreatedAt: r.CreatedAt.Time.UTC(), UpdatedAt: r.UpdatedAt.Time.UTC(), AllowDestroyPlan: r.AllowDestroyPlan.Bool, @@ -80,16 +80,12 @@ func (r pgresult) toWorkspace() (*Workspace, error) { WorkingDirectory: r.WorkingDirectory.String, Organization: r.OrganizationName.String, Tags: sql.FromStringArray(r.Tags), + AgentPoolID: r.AgentPoolID, } - if r.AgentPoolID.Valid { - agentPoolIDValue := resource.ParseID(r.AgentPoolID.String) - ws.AgentPoolID = &agentPoolIDValue - } - - if r.VCSProviderID.Valid && r.RepoPath.Valid { + if r.RepoPath.Valid { ws.Connection = &Connection{ AllowCLIApply: r.AllowCLIApply.Bool, - VCSProviderID: resource.ParseID(r.VCSProviderID.String), + VCSProviderID: r.VCSProviderID, Repo: r.RepoPath.String, Branch: r.Branch.String, } @@ -98,19 +94,17 @@ func (r pgresult) toWorkspace() (*Workspace, error) { } } - if r.LatestRunID.Valid && r.LatestRunStatus.Valid { + if r.LatestRunID != nil { ws.LatestRun = &LatestRun{ - ID: resource.ParseID(r.LatestRunID.String), + ID: *r.LatestRunID, Status: runStatus(r.LatestRunStatus.String), } } - if r.LockUserID.Valid { - lockID := resource.ParseID(r.LockUserID.String) - ws.Lock = &lockID - } else if r.LockRunID.Valid { - lockID := resource.ParseID(r.LockRunID.String) - ws.Lock = &lockID + if r.LockUserID != nil { + ws.Lock = r.LockRunID + } else if r.LockRunID != nil { + ws.Lock = r.LockRunID } return &ws, nil @@ -119,10 +113,10 @@ func (r pgresult) toWorkspace() (*Workspace, error) { func (db *pgdb) create(ctx context.Context, ws *Workspace) error { q := db.Querier(ctx) params := sqlc.InsertWorkspaceParams{ - ID: sql.ID(ws.ID), + ID: ws.ID, CreatedAt: sql.Timestamptz(ws.CreatedAt), UpdatedAt: sql.Timestamptz(ws.UpdatedAt), - AgentPoolID: sql.IDPtr(ws.AgentPoolID), + AgentPoolID: ws.AgentPoolID, AllowCLIApply: sql.Bool(false), AllowDestroyPlan: sql.Bool(ws.AllowDestroyPlan), AutoApply: sql.Bool(ws.AutoApply), @@ -160,7 +154,7 @@ func (db *pgdb) update(ctx context.Context, workspaceID resource.ID, fn func(*Wo err := db.Tx(ctx, func(ctx context.Context, q *sqlc.Queries) error { var err error // retrieve workspace - result, err := q.FindWorkspaceByIDForUpdate(ctx, sql.ID(workspaceID)) + result, err := q.FindWorkspaceByIDForUpdate(ctx, workspaceID) if err != nil { return sql.Error(err) } @@ -174,7 +168,7 @@ func (db *pgdb) update(ctx context.Context, workspaceID resource.ID, fn func(*Wo } // persist update params := sqlc.UpdateWorkspaceByIDParams{ - AgentPoolID: sql.IDPtr(ws.AgentPoolID), + AgentPoolID: ws.AgentPoolID, AllowDestroyPlan: sql.Bool(ws.AllowDestroyPlan), AllowCLIApply: sql.Bool(false), AutoApply: sql.Bool(ws.AutoApply), @@ -192,7 +186,7 @@ func (db *pgdb) update(ctx context.Context, workspaceID resource.ID, fn func(*Wo VCSTagsRegex: sql.StringPtr(nil), WorkingDirectory: sql.String(ws.WorkingDirectory), UpdatedAt: sql.Timestamptz(ws.UpdatedAt), - ID: sql.ID(ws.ID), + ID: ws.ID, } if ws.Connection != nil { params.AllowCLIApply = sql.Bool(ws.Connection.AllowCLIApply) @@ -210,8 +204,8 @@ func (db *pgdb) setCurrentRun(ctx context.Context, workspaceID, runID resource.I q := db.Querier(ctx) err := q.UpdateWorkspaceLatestRun(ctx, sqlc.UpdateWorkspaceLatestRunParams{ - RunID: sql.ID(runID), - WorkspaceID: sql.ID(workspaceID), + RunID: &runID, + WorkspaceID: workspaceID, }) if err != nil { return nil, sql.Error(err) @@ -268,7 +262,7 @@ func (db *pgdb) listByConnection(ctx context.Context, vcsProviderID resource.ID, q := db.Querier(ctx) rows, err := q.FindWorkspacesByConnection(ctx, sqlc.FindWorkspacesByConnectionParams{ - VCSProviderID: sql.ID(vcsProviderID), + VCSProviderID: vcsProviderID, RepoPath: sql.String(repoPath), }) if err != nil { @@ -320,7 +314,7 @@ func (db *pgdb) listByUsername(ctx context.Context, username string, organizatio func (db *pgdb) get(ctx context.Context, workspaceID resource.ID) (*Workspace, error) { q := db.Querier(ctx) - result, err := q.FindWorkspaceByID(ctx, sql.ID(workspaceID)) + result, err := q.FindWorkspaceByID(ctx, workspaceID) if err != nil { return nil, sql.Error(err) } @@ -341,7 +335,7 @@ func (db *pgdb) getByName(ctx context.Context, organization, workspace string) ( func (db *pgdb) delete(ctx context.Context, workspaceID resource.ID) error { q := db.Querier(ctx) - err := q.DeleteWorkspaceByID(ctx, sql.ID(workspaceID)) + err := q.DeleteWorkspaceByID(ctx, workspaceID) if err != nil { return sql.Error(err) } diff --git a/sqlc.yaml b/sqlc.yaml index 2d4dda397..2984792a1 100644 --- a/sqlc.yaml +++ b/sqlc.yaml @@ -73,6 +73,262 @@ sql: go_type: type: "AgentPool" pointer: true + - column: "agent_pools.agent_pool_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "agent_pool_allowed_workspaces.agent_pool_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "agent_pool_allowed_workspaces.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "agent_tokens.agent_token_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "agent_tokens.agent_pool_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "applies.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "configuration_version_status_timestamps.configuration_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "configuration_versions.configuration_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "configuration_versions.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "github_app_installs.vcs_provider_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "ingress_attributes.configuration_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "jobs.runner_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "logs.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "module_tarballs.module_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "module_versions.module_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "module_versions.module_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "modules.module_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "notification_configurations.notification_configuration_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "notification_configurations.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "organization_tokens.organization_token_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "organizations.organization_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "phase_status_timestamps.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "plans.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "repo_connections.module_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "repo_connections.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "repo_connections.vcs_provider_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "repohooks.vcs_provider_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "run_status_timestamps.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "run_variables.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "runs.run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "runs.configuration_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "runs.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "runners.runner_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "runners.agent_pool_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "state_version_outputs.state_version_output_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "state_version_outputs.state_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "state_versions.state_version_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "state_versions.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "team_memberships.team_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "team_tokens.team_token_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "team_tokens.team_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "teams.team_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "tokens.token_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "users.user_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variable_set_variables.variable_set_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variable_set_variables.variable_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variable_set_workspaces.variable_set_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variable_set_workspaces.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variable_sets.variable_set_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "variables.variable_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "vcs_providers.vcs_provider_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspaces.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspaces.agent_pool_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "workspaces.lock_run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "workspaces.lock_user_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "workspaces.latest_run_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + pointer: true + - column: "workspace_permissions.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspace_permissions.team_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspace_tags.tag_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspace_tags.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspace_variables.workspace_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" + - column: "workspace_variables.variable_id" + go_type: + import: "github.com/leg100/otf/internal/resource" + type: "ID" initialisms: - "id" - "vcs"