feat: Update generated schema for provisionerd (#121)

This commit is contained in:
Kyle Carberry
2022-01-31 23:36:15 -06:00
committed by GitHub
parent bf90dede4f
commit ac617e1fa8
21 changed files with 1588 additions and 730 deletions
+126 -20
View File
@@ -18,16 +18,18 @@ func New() database.Store {
organizationMembers: make([]database.OrganizationMember, 0),
users: make([]database.User, 0),
parameterValue: make([]database.ParameterValue, 0),
project: make([]database.Project, 0),
projectHistory: make([]database.ProjectHistory, 0),
projectParameter: make([]database.ProjectParameter, 0),
provisionerDaemons: make([]database.ProvisionerDaemon, 0),
provisionerJobs: make([]database.ProvisionerJob, 0),
workspace: make([]database.Workspace, 0),
workspaceResource: make([]database.WorkspaceResource, 0),
workspaceHistory: make([]database.WorkspaceHistory, 0),
workspaceAgent: make([]database.WorkspaceAgent, 0),
parameterValue: make([]database.ParameterValue, 0),
project: make([]database.Project, 0),
projectHistory: make([]database.ProjectHistory, 0),
projectHistoryLog: make([]database.ProjectHistoryLog, 0),
projectParameter: make([]database.ProjectParameter, 0),
provisionerDaemons: make([]database.ProvisionerDaemon, 0),
provisionerJobs: make([]database.ProvisionerJob, 0),
workspace: make([]database.Workspace, 0),
workspaceResource: make([]database.WorkspaceResource, 0),
workspaceHistory: make([]database.WorkspaceHistory, 0),
workspaceHistoryLog: make([]database.WorkspaceHistoryLog, 0),
workspaceAgent: make([]database.WorkspaceAgent, 0),
}
}
@@ -40,16 +42,18 @@ type fakeQuerier struct {
users []database.User
// New tables
parameterValue []database.ParameterValue
project []database.Project
projectHistory []database.ProjectHistory
projectParameter []database.ProjectParameter
provisionerDaemons []database.ProvisionerDaemon
provisionerJobs []database.ProvisionerJob
workspace []database.Workspace
workspaceResource []database.WorkspaceResource
workspaceHistory []database.WorkspaceHistory
workspaceAgent []database.WorkspaceAgent
parameterValue []database.ParameterValue
project []database.Project
projectHistory []database.ProjectHistory
projectHistoryLog []database.ProjectHistoryLog
projectParameter []database.ProjectParameter
provisionerDaemons []database.ProvisionerDaemon
provisionerJobs []database.ProvisionerJob
workspace []database.Workspace
workspaceAgent []database.WorkspaceAgent
workspaceHistory []database.WorkspaceHistory
workspaceHistoryLog []database.WorkspaceHistoryLog
workspaceResource []database.WorkspaceResource
}
// InTx doesn't rollback data properly for in-memory yet.
@@ -184,6 +188,23 @@ func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceIDWithoutAfter(_ context.Con
return database.WorkspaceHistory{}, sql.ErrNoRows
}
func (q *fakeQuerier) GetWorkspaceHistoryLogsByIDBefore(_ context.Context, arg database.GetWorkspaceHistoryLogsByIDBeforeParams) ([]database.WorkspaceHistoryLog, error) {
logs := make([]database.WorkspaceHistoryLog, 0)
for _, workspaceHistoryLog := range q.workspaceHistoryLog {
if workspaceHistoryLog.WorkspaceHistoryID.String() != arg.WorkspaceHistoryID.String() {
continue
}
if workspaceHistoryLog.CreatedAt.After(arg.CreatedAt) {
continue
}
logs = append(logs, workspaceHistoryLog)
}
if len(logs) == 0 {
return nil, sql.ErrNoRows
}
return logs, nil
}
func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceID(_ context.Context, workspaceID uuid.UUID) ([]database.WorkspaceHistory, error) {
history := make([]database.WorkspaceHistory, 0)
for _, workspaceHistory := range q.workspaceHistory {
@@ -197,6 +218,19 @@ func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceID(_ context.Context, worksp
return history, nil
}
func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceIDAndName(_ context.Context, arg database.GetWorkspaceHistoryByWorkspaceIDAndNameParams) (database.WorkspaceHistory, error) {
for _, workspaceHistory := range q.workspaceHistory {
if workspaceHistory.WorkspaceID.String() != arg.WorkspaceID.String() {
continue
}
if !strings.EqualFold(workspaceHistory.Name, arg.Name) {
continue
}
return workspaceHistory, nil
}
return database.WorkspaceHistory{}, sql.ErrNoRows
}
func (q *fakeQuerier) GetWorkspacesByProjectAndUserID(_ context.Context, arg database.GetWorkspacesByProjectAndUserIDParams) ([]database.Workspace, error) {
workspaces := make([]database.Workspace, 0)
for _, workspace := range q.workspace {
@@ -318,6 +352,36 @@ func (q *fakeQuerier) GetProjectHistoryByProjectID(_ context.Context, projectID
return history, nil
}
func (q *fakeQuerier) GetProjectHistoryByProjectIDAndName(_ context.Context, arg database.GetProjectHistoryByProjectIDAndNameParams) (database.ProjectHistory, error) {
for _, projectHistory := range q.projectHistory {
if projectHistory.ProjectID.String() != arg.ProjectID.String() {
continue
}
if !strings.EqualFold(projectHistory.Name, arg.Name) {
continue
}
return projectHistory, nil
}
return database.ProjectHistory{}, sql.ErrNoRows
}
func (q *fakeQuerier) GetProjectHistoryLogsByIDBefore(_ context.Context, arg database.GetProjectHistoryLogsByIDBeforeParams) ([]database.ProjectHistoryLog, error) {
logs := make([]database.ProjectHistoryLog, 0)
for _, projectHistoryLog := range q.projectHistoryLog {
if projectHistoryLog.ProjectHistoryID.String() != arg.ProjectHistoryID.String() {
continue
}
if projectHistoryLog.CreatedAt.After(arg.CreatedAt) {
continue
}
logs = append(logs, projectHistoryLog)
}
if len(logs) == 0 {
return nil, sql.ErrNoRows
}
return logs, nil
}
func (q *fakeQuerier) GetProjectHistoryByID(_ context.Context, projectHistoryID uuid.UUID) (database.ProjectHistory, error) {
for _, projectHistory := range q.projectHistory {
if projectHistory.ID.String() != projectHistoryID.String() {
@@ -371,6 +435,13 @@ func (q *fakeQuerier) GetOrganizationMemberByUserID(_ context.Context, arg datab
return database.OrganizationMember{}, sql.ErrNoRows
}
func (q *fakeQuerier) GetProvisionerDaemons(_ context.Context) ([]database.ProvisionerDaemon, error) {
if len(q.provisionerDaemons) == 0 {
return nil, sql.ErrNoRows
}
return q.provisionerDaemons, nil
}
func (q *fakeQuerier) GetProvisionerDaemonByID(_ context.Context, id uuid.UUID) (database.ProvisionerDaemon, error) {
for _, provisionerDaemon := range q.provisionerDaemons {
if provisionerDaemon.ID.String() != id.String() {
@@ -486,6 +557,22 @@ func (q *fakeQuerier) InsertProjectHistory(_ context.Context, arg database.Inser
return history, nil
}
func (q *fakeQuerier) InsertProjectHistoryLogs(_ context.Context, arg database.InsertProjectHistoryLogsParams) ([]database.ProjectHistoryLog, error) {
logs := make([]database.ProjectHistoryLog, 0)
for index, output := range arg.Output {
logs = append(logs, database.ProjectHistoryLog{
ProjectHistoryID: arg.ProjectHistoryID,
ID: arg.ID[index],
CreatedAt: arg.CreatedAt[index],
Source: arg.Source[index],
Level: arg.Level[index],
Output: output,
})
}
q.projectHistoryLog = append(q.projectHistoryLog, logs...)
return logs, nil
}
func (q *fakeQuerier) InsertProjectParameter(_ context.Context, arg database.InsertProjectParameterParams) (database.ProjectParameter, error) {
//nolint:gosimple
param := database.ProjectParameter{
@@ -586,6 +673,7 @@ func (q *fakeQuerier) InsertWorkspaceHistory(_ context.Context, arg database.Ins
CreatedAt: arg.CreatedAt,
UpdatedAt: arg.UpdatedAt,
WorkspaceID: arg.WorkspaceID,
Name: arg.Name,
ProjectHistoryID: arg.ProjectHistoryID,
BeforeID: arg.BeforeID,
Transition: arg.Transition,
@@ -596,6 +684,22 @@ func (q *fakeQuerier) InsertWorkspaceHistory(_ context.Context, arg database.Ins
return workspaceHistory, nil
}
func (q *fakeQuerier) InsertWorkspaceHistoryLogs(_ context.Context, arg database.InsertWorkspaceHistoryLogsParams) ([]database.WorkspaceHistoryLog, error) {
logs := make([]database.WorkspaceHistoryLog, 0)
for index, output := range arg.Output {
logs = append(logs, database.WorkspaceHistoryLog{
WorkspaceHistoryID: arg.WorkspaceHistoryID,
ID: arg.ID[index],
CreatedAt: arg.CreatedAt[index],
Source: arg.Source[index],
Level: arg.Level[index],
Output: output,
})
}
q.workspaceHistoryLog = append(q.workspaceHistoryLog, logs...)
return logs, nil
}
func (q *fakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.InsertWorkspaceResourceParams) (database.WorkspaceResource, error) {
workspaceResource := database.WorkspaceResource{
ID: arg.ID,
@@ -659,7 +763,9 @@ func (q *fakeQuerier) UpdateWorkspaceHistoryByID(_ context.Context, arg database
continue
}
workspaceHistory.UpdatedAt = arg.UpdatedAt
workspaceHistory.CompletedAt = arg.CompletedAt
workspaceHistory.AfterID = arg.AfterID
workspaceHistory.ProvisionerState = arg.ProvisionerState
q.workspaceHistory[index] = workspaceHistory
return nil
}
+38 -14
View File
@@ -5,8 +5,12 @@ CREATE TYPE log_level AS ENUM (
'debug',
'info',
'warn',
'error',
'fatal'
'error'
);
CREATE TYPE log_source AS ENUM (
'provisioner_daemon',
'provisioner'
);
CREATE TYPE login_type AS ENUM (
@@ -142,6 +146,15 @@ CREATE TABLE project_history (
import_job_id uuid NOT NULL
);
CREATE TABLE project_history_log (
id uuid NOT NULL,
project_history_id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
source log_source NOT NULL,
level log_level NOT NULL,
output character varying(1024) NOT NULL
);
CREATE TABLE project_parameter (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
@@ -233,6 +246,7 @@ CREATE TABLE workspace_history (
completed_at timestamp with time zone,
workspace_id uuid NOT NULL,
project_history_id uuid NOT NULL,
name character varying(64) NOT NULL,
before_id uuid,
after_id uuid,
transition workspace_transition NOT NULL,
@@ -241,13 +255,13 @@ CREATE TABLE workspace_history (
provision_job_id uuid NOT NULL
);
CREATE TABLE workspace_log (
workspace_id uuid NOT NULL,
CREATE TABLE workspace_history_log (
id uuid NOT NULL,
workspace_history_id uuid NOT NULL,
created timestamp with time zone NOT NULL,
logged_by character varying(255),
created_at timestamp with time zone NOT NULL,
source log_source NOT NULL,
level log_level NOT NULL,
log jsonb NOT NULL
output character varying(1024) NOT NULL
);
CREATE TABLE workspace_resource (
@@ -269,6 +283,9 @@ ALTER TABLE ONLY parameter_value
ALTER TABLE ONLY project_history
ADD CONSTRAINT project_history_id_key UNIQUE (id);
ALTER TABLE ONLY project_history_log
ADD CONSTRAINT project_history_log_id_key UNIQUE (id);
ALTER TABLE ONLY project_history
ADD CONSTRAINT project_history_project_id_name_key UNIQUE (project_id, name);
@@ -299,9 +316,18 @@ ALTER TABLE ONLY workspace_agent
ALTER TABLE ONLY workspace_history
ADD CONSTRAINT workspace_history_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_history_log
ADD CONSTRAINT workspace_history_log_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_history
ADD CONSTRAINT workspace_history_workspace_id_name_key UNIQUE (workspace_id, name);
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_id_key UNIQUE (id);
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_owner_id_name_key UNIQUE (owner_id, name);
ALTER TABLE ONLY workspace_resource
ADD CONSTRAINT workspace_resource_id_key UNIQUE (id);
@@ -311,7 +337,8 @@ ALTER TABLE ONLY workspace_resource
ALTER TABLE ONLY workspace_resource
ADD CONSTRAINT workspace_resource_workspace_history_id_name_key UNIQUE (workspace_history_id, name);
CREATE INDEX workspace_log_index ON workspace_log USING btree (workspace_id, workspace_history_id);
ALTER TABLE ONLY project_history_log
ADD CONSTRAINT project_history_log_project_history_id_fkey FOREIGN KEY (project_history_id) REFERENCES project_history(id) ON DELETE CASCADE;
ALTER TABLE ONLY project_history
ADD CONSTRAINT project_history_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
@@ -325,18 +352,15 @@ ALTER TABLE ONLY provisioner_job
ALTER TABLE ONLY workspace_agent
ADD CONSTRAINT workspace_agent_workspace_resource_id_fkey FOREIGN KEY (workspace_resource_id) REFERENCES workspace_resource(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_history_log
ADD CONSTRAINT workspace_history_log_workspace_history_id_fkey FOREIGN KEY (workspace_history_id) REFERENCES workspace_history(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_history
ADD CONSTRAINT workspace_history_project_history_id_fkey FOREIGN KEY (project_history_id) REFERENCES project_history(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_history
ADD CONSTRAINT workspace_history_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspace(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_log
ADD CONSTRAINT workspace_log_workspace_history_id_fkey FOREIGN KEY (workspace_history_id) REFERENCES workspace_history(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_log
ADD CONSTRAINT workspace_log_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspace(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
@@ -90,3 +90,25 @@ CREATE TABLE project_parameter (
validation_value_type varchar(64) NOT NULL,
UNIQUE(project_history_id, name)
);
CREATE TYPE log_level AS ENUM (
'trace',
'debug',
'info',
'warn',
'error'
);
CREATE TYPE log_source AS ENUM (
'provisioner_daemon',
'provisioner'
);
CREATE TABLE project_history_log (
id uuid NOT NULL UNIQUE,
project_history_id uuid NOT NULL REFERENCES project_history (id) ON DELETE CASCADE,
created_at timestamptz NOT NULL,
source log_source NOT NULL,
level log_level NOT NULL,
output varchar(1024) NOT NULL
);
+10 -24
View File
@@ -4,7 +4,8 @@ CREATE TABLE workspace (
updated_at timestamptz NOT NULL,
owner_id text NOT NULL,
project_id uuid NOT NULL REFERENCES project (id),
name varchar(64) NOT NULL
name varchar(64) NOT NULL,
UNIQUE(owner_id, name)
);
CREATE TYPE workspace_transition AS ENUM (
@@ -22,6 +23,7 @@ CREATE TABLE workspace_history (
completed_at timestamptz,
workspace_id uuid NOT NULL REFERENCES workspace (id) ON DELETE CASCADE,
project_history_id uuid NOT NULL REFERENCES project_history (id) ON DELETE CASCADE,
name varchar(64) NOT NULL,
before_id uuid,
after_id uuid,
transition workspace_transition NOT NULL,
@@ -29,7 +31,8 @@ CREATE TABLE workspace_history (
-- State stored by the provisioner
provisioner_state bytea,
-- Job ID of the action
provision_job_id uuid NOT NULL
provision_job_id uuid NOT NULL,
UNIQUE(workspace_id, name)
);
-- Cloud resources produced by a provision job.
@@ -63,28 +66,11 @@ CREATE TABLE workspace_agent (
resource_metadata jsonb NOT NULL
);
CREATE TYPE log_level AS ENUM (
'trace',
'debug',
'info',
'warn',
'error',
'fatal'
);
CREATE TABLE workspace_log (
workspace_id uuid NOT NULL REFERENCES workspace (id) ON DELETE CASCADE,
-- workspace_history_id can be NULL because some events are not going to be part of a
-- deliberate transition, e.g. an infrastructure failure that kills the workspace
CREATE TABLE workspace_history_log (
id uuid NOT NULL UNIQUE,
workspace_history_id uuid NOT NULL REFERENCES workspace_history (id) ON DELETE CASCADE,
created timestamptz NOT NULL,
-- not sure this is necessary, also not sure it's necessary separate from the log column
logged_by varchar(255),
created_at timestamptz NOT NULL,
source log_source NOT NULL,
level log_level NOT NULL,
log jsonb NOT NULL
);
CREATE INDEX workspace_log_index ON workspace_log (
workspace_id,
workspace_history_id
output varchar(1024) NOT NULL
);
+36 -8
View File
@@ -19,7 +19,6 @@ const (
LogLevelInfo LogLevel = "info"
LogLevelWarn LogLevel = "warn"
LogLevelError LogLevel = "error"
LogLevelFatal LogLevel = "fatal"
)
func (e *LogLevel) Scan(src interface{}) error {
@@ -34,6 +33,25 @@ func (e *LogLevel) Scan(src interface{}) error {
return nil
}
type LogSource string
const (
LogSourceProvisionerDaemon LogSource = "provisioner_daemon"
LogSourceProvisioner LogSource = "provisioner"
)
func (e *LogSource) Scan(src interface{}) error {
switch s := src.(type) {
case []byte:
*e = LogSource(s)
case string:
*e = LogSource(s)
default:
return fmt.Errorf("unsupported scan type for LogSource: %T", src)
}
return nil
}
type LoginType string
const (
@@ -307,6 +325,15 @@ type ProjectHistory struct {
ImportJobID uuid.UUID `db:"import_job_id" json:"import_job_id"`
}
type ProjectHistoryLog struct {
ID uuid.UUID `db:"id" json:"id"`
ProjectHistoryID uuid.UUID `db:"project_history_id" json:"project_history_id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
Source LogSource `db:"source" json:"source"`
Level LogLevel `db:"level" json:"level"`
Output string `db:"output" json:"output"`
}
type ProjectParameter struct {
ID uuid.UUID `db:"id" json:"id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
@@ -398,6 +425,7 @@ type WorkspaceHistory struct {
CompletedAt sql.NullTime `db:"completed_at" json:"completed_at"`
WorkspaceID uuid.UUID `db:"workspace_id" json:"workspace_id"`
ProjectHistoryID uuid.UUID `db:"project_history_id" json:"project_history_id"`
Name string `db:"name" json:"name"`
BeforeID uuid.NullUUID `db:"before_id" json:"before_id"`
AfterID uuid.NullUUID `db:"after_id" json:"after_id"`
Transition WorkspaceTransition `db:"transition" json:"transition"`
@@ -406,13 +434,13 @@ type WorkspaceHistory struct {
ProvisionJobID uuid.UUID `db:"provision_job_id" json:"provision_job_id"`
}
type WorkspaceLog struct {
WorkspaceID uuid.UUID `db:"workspace_id" json:"workspace_id"`
WorkspaceHistoryID uuid.UUID `db:"workspace_history_id" json:"workspace_history_id"`
Created time.Time `db:"created" json:"created"`
LoggedBy sql.NullString `db:"logged_by" json:"logged_by"`
Level LogLevel `db:"level" json:"level"`
Log json.RawMessage `db:"log" json:"log"`
type WorkspaceHistoryLog struct {
ID uuid.UUID `db:"id" json:"id"`
WorkspaceHistoryID uuid.UUID `db:"workspace_history_id" json:"workspace_history_id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
Source LogSource `db:"source" json:"source"`
Level LogLevel `db:"level" json:"level"`
Output string `db:"output" json:"output"`
}
type WorkspaceResource struct {
+7
View File
@@ -20,9 +20,12 @@ type querier interface {
GetProjectByOrganizationAndName(ctx context.Context, arg GetProjectByOrganizationAndNameParams) (Project, error)
GetProjectHistoryByID(ctx context.Context, id uuid.UUID) (ProjectHistory, error)
GetProjectHistoryByProjectID(ctx context.Context, projectID uuid.UUID) ([]ProjectHistory, error)
GetProjectHistoryByProjectIDAndName(ctx context.Context, arg GetProjectHistoryByProjectIDAndNameParams) (ProjectHistory, error)
GetProjectHistoryLogsByIDBefore(ctx context.Context, arg GetProjectHistoryLogsByIDBeforeParams) ([]ProjectHistoryLog, error)
GetProjectParametersByHistoryID(ctx context.Context, projectHistoryID uuid.UUID) ([]ProjectParameter, error)
GetProjectsByOrganizationIDs(ctx context.Context, ids []string) ([]Project, error)
GetProvisionerDaemonByID(ctx context.Context, id uuid.UUID) (ProvisionerDaemon, error)
GetProvisionerDaemons(ctx context.Context) ([]ProvisionerDaemon, error)
GetProvisionerJobByID(ctx context.Context, id uuid.UUID) (ProvisionerJob, error)
GetUserByEmailOrUsername(ctx context.Context, arg GetUserByEmailOrUsernameParams) (User, error)
GetUserByID(ctx context.Context, id string) (User, error)
@@ -32,7 +35,9 @@ type querier interface {
GetWorkspaceByUserIDAndName(ctx context.Context, arg GetWorkspaceByUserIDAndNameParams) (Workspace, error)
GetWorkspaceHistoryByID(ctx context.Context, id uuid.UUID) (WorkspaceHistory, error)
GetWorkspaceHistoryByWorkspaceID(ctx context.Context, workspaceID uuid.UUID) ([]WorkspaceHistory, error)
GetWorkspaceHistoryByWorkspaceIDAndName(ctx context.Context, arg GetWorkspaceHistoryByWorkspaceIDAndNameParams) (WorkspaceHistory, error)
GetWorkspaceHistoryByWorkspaceIDWithoutAfter(ctx context.Context, workspaceID uuid.UUID) (WorkspaceHistory, error)
GetWorkspaceHistoryLogsByIDBefore(ctx context.Context, arg GetWorkspaceHistoryLogsByIDBeforeParams) ([]WorkspaceHistoryLog, error)
GetWorkspaceResourcesByHistoryID(ctx context.Context, workspaceHistoryID uuid.UUID) ([]WorkspaceResource, error)
GetWorkspacesByProjectAndUserID(ctx context.Context, arg GetWorkspacesByProjectAndUserIDParams) ([]Workspace, error)
GetWorkspacesByUserID(ctx context.Context, ownerID string) ([]Workspace, error)
@@ -42,6 +47,7 @@ type querier interface {
InsertParameterValue(ctx context.Context, arg InsertParameterValueParams) (ParameterValue, error)
InsertProject(ctx context.Context, arg InsertProjectParams) (Project, error)
InsertProjectHistory(ctx context.Context, arg InsertProjectHistoryParams) (ProjectHistory, error)
InsertProjectHistoryLogs(ctx context.Context, arg InsertProjectHistoryLogsParams) ([]ProjectHistoryLog, error)
InsertProjectParameter(ctx context.Context, arg InsertProjectParameterParams) (ProjectParameter, error)
InsertProvisionerDaemon(ctx context.Context, arg InsertProvisionerDaemonParams) (ProvisionerDaemon, error)
InsertProvisionerJob(ctx context.Context, arg InsertProvisionerJobParams) (ProvisionerJob, error)
@@ -49,6 +55,7 @@ type querier interface {
InsertWorkspace(ctx context.Context, arg InsertWorkspaceParams) (Workspace, error)
InsertWorkspaceAgent(ctx context.Context, arg InsertWorkspaceAgentParams) (WorkspaceAgent, error)
InsertWorkspaceHistory(ctx context.Context, arg InsertWorkspaceHistoryParams) (WorkspaceHistory, error)
InsertWorkspaceHistoryLogs(ctx context.Context, arg InsertWorkspaceHistoryLogsParams) ([]WorkspaceHistoryLog, error)
InsertWorkspaceResource(ctx context.Context, arg InsertWorkspaceResourceParams) (WorkspaceResource, error)
UpdateAPIKeyByID(ctx context.Context, arg UpdateAPIKeyByIDParams) error
UpdateProvisionerDaemonByID(ctx context.Context, arg UpdateProvisionerDaemonByIDParams) error
+73 -2
View File
@@ -171,6 +171,15 @@ FROM
WHERE
project_id = $1;
-- name: GetProjectHistoryByProjectIDAndName :one
SELECT
*
FROM
project_history
WHERE
project_id = $1
AND name = $2;
-- name: GetProjectHistoryByID :one
SELECT
*
@@ -179,6 +188,23 @@ FROM
WHERE
id = $1;
-- name: GetProjectHistoryLogsByIDBefore :many
SELECT
*
FROM
project_history_log
WHERE
project_history_id = $1
AND created_at <= $2
ORDER BY
created_at;
-- name: GetProvisionerDaemons :many
SELECT
*
FROM
provisioner_daemon;
-- name: GetProvisionerDaemonByID :one
SELECT
*
@@ -241,6 +267,15 @@ WHERE
LIMIT
1;
-- name: GetWorkspaceHistoryByWorkspaceIDAndName :one
SELECT
*
FROM
workspace_history
WHERE
workspace_id = $1
AND name = $2;
-- name: GetWorkspaceHistoryByWorkspaceID :many
SELECT
*
@@ -260,6 +295,17 @@ WHERE
LIMIT
1;
-- name: GetWorkspaceHistoryLogsByIDBefore :many
SELECT
*
FROM
workspace_history_log
WHERE
workspace_history_id = $1
AND created_at <= $2
ORDER BY
created_at;
-- name: GetWorkspaceResourcesByHistoryID :many
SELECT
*
@@ -378,6 +424,17 @@ INSERT INTO
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *;
-- name: InsertProjectHistoryLogs :many
INSERT INTO
project_history_log
SELECT
@project_history_id :: uuid AS project_history_id,
unnset(@id :: uuid [ ]) AS id,
unnest(@created_at :: timestamptz [ ]) AS created_at,
unnset(@source :: log_source [ ]) as source,
unnset(@level :: log_level [ ]) as level,
unnset(@output :: varchar(1024) [ ]) as output RETURNING *;
-- name: InsertProjectParameter :one
INSERT INTO
project_parameter (
@@ -492,12 +549,24 @@ INSERT INTO
workspace_id,
project_history_id,
before_id,
name,
transition,
initiator,
provision_job_id
)
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *;
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING *;
-- name: InsertWorkspaceHistoryLogs :many
INSERT INTO
workspace_history_log
SELECT
@workspace_history_id :: uuid AS workspace_history_id,
unnset(@id :: uuid [ ]) AS id,
unnest(@created_at :: timestamptz [ ]) AS created_at,
unnset(@source :: log_source [ ]) as source,
unnset(@level :: log_level [ ]) as level,
unnset(@output :: varchar(1024) [ ]) as output RETURNING *;
-- name: InsertWorkspaceResource :one
INSERT INTO
@@ -549,6 +618,8 @@ UPDATE
workspace_history
SET
updated_at = $2,
after_id = $3
completed_at = $3,
after_id = $4,
provisioner_state = $5
WHERE
id = $1;
+340 -9
View File
@@ -418,6 +418,85 @@ func (q *sqlQuerier) GetProjectHistoryByProjectID(ctx context.Context, projectID
return items, nil
}
const getProjectHistoryByProjectIDAndName = `-- name: GetProjectHistoryByProjectIDAndName :one
SELECT
id, project_id, created_at, updated_at, name, description, storage_method, storage_source, import_job_id
FROM
project_history
WHERE
project_id = $1
AND name = $2
`
type GetProjectHistoryByProjectIDAndNameParams struct {
ProjectID uuid.UUID `db:"project_id" json:"project_id"`
Name string `db:"name" json:"name"`
}
func (q *sqlQuerier) GetProjectHistoryByProjectIDAndName(ctx context.Context, arg GetProjectHistoryByProjectIDAndNameParams) (ProjectHistory, error) {
row := q.db.QueryRowContext(ctx, getProjectHistoryByProjectIDAndName, arg.ProjectID, arg.Name)
var i ProjectHistory
err := row.Scan(
&i.ID,
&i.ProjectID,
&i.CreatedAt,
&i.UpdatedAt,
&i.Name,
&i.Description,
&i.StorageMethod,
&i.StorageSource,
&i.ImportJobID,
)
return i, err
}
const getProjectHistoryLogsByIDBefore = `-- name: GetProjectHistoryLogsByIDBefore :many
SELECT
id, project_history_id, created_at, source, level, output
FROM
project_history_log
WHERE
project_history_id = $1
AND created_at <= $2
ORDER BY
created_at
`
type GetProjectHistoryLogsByIDBeforeParams struct {
ProjectHistoryID uuid.UUID `db:"project_history_id" json:"project_history_id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
}
func (q *sqlQuerier) GetProjectHistoryLogsByIDBefore(ctx context.Context, arg GetProjectHistoryLogsByIDBeforeParams) ([]ProjectHistoryLog, error) {
rows, err := q.db.QueryContext(ctx, getProjectHistoryLogsByIDBefore, arg.ProjectHistoryID, arg.CreatedAt)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ProjectHistoryLog
for rows.Next() {
var i ProjectHistoryLog
if err := rows.Scan(
&i.ID,
&i.ProjectHistoryID,
&i.CreatedAt,
&i.Source,
&i.Level,
&i.Output,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getProjectParametersByHistoryID = `-- name: GetProjectParametersByHistoryID :many
SELECT
id, created_at, project_history_id, name, description, default_source_scheme, default_source_value, allow_override_source, default_destination_scheme, default_destination_value, allow_override_destination, default_refresh, redisplay_value, validation_error, validation_condition, validation_type_system, validation_value_type
@@ -530,6 +609,42 @@ func (q *sqlQuerier) GetProvisionerDaemonByID(ctx context.Context, id uuid.UUID)
return i, err
}
const getProvisionerDaemons = `-- name: GetProvisionerDaemons :many
SELECT
id, created_at, updated_at, name, provisioners
FROM
provisioner_daemon
`
func (q *sqlQuerier) GetProvisionerDaemons(ctx context.Context) ([]ProvisionerDaemon, error) {
rows, err := q.db.QueryContext(ctx, getProvisionerDaemons)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ProvisionerDaemon
for rows.Next() {
var i ProvisionerDaemon
if err := rows.Scan(
&i.ID,
&i.CreatedAt,
&i.UpdatedAt,
&i.Name,
pq.Array(&i.Provisioners),
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getProvisionerJobByID = `-- name: GetProvisionerJobByID :one
SELECT
id, created_at, updated_at, started_at, cancelled_at, completed_at, error, initiator_id, provisioner, type, project_id, input, worker_id
@@ -751,7 +866,7 @@ func (q *sqlQuerier) GetWorkspaceByUserIDAndName(ctx context.Context, arg GetWor
const getWorkspaceHistoryByID = `-- name: GetWorkspaceHistoryByID :one
SELECT
id, created_at, updated_at, completed_at, workspace_id, project_history_id, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
id, created_at, updated_at, completed_at, workspace_id, project_history_id, name, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
FROM
workspace_history
WHERE
@@ -770,6 +885,7 @@ func (q *sqlQuerier) GetWorkspaceHistoryByID(ctx context.Context, id uuid.UUID)
&i.CompletedAt,
&i.WorkspaceID,
&i.ProjectHistoryID,
&i.Name,
&i.BeforeID,
&i.AfterID,
&i.Transition,
@@ -782,7 +898,7 @@ func (q *sqlQuerier) GetWorkspaceHistoryByID(ctx context.Context, id uuid.UUID)
const getWorkspaceHistoryByWorkspaceID = `-- name: GetWorkspaceHistoryByWorkspaceID :many
SELECT
id, created_at, updated_at, completed_at, workspace_id, project_history_id, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
id, created_at, updated_at, completed_at, workspace_id, project_history_id, name, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
FROM
workspace_history
WHERE
@@ -805,6 +921,7 @@ func (q *sqlQuerier) GetWorkspaceHistoryByWorkspaceID(ctx context.Context, works
&i.CompletedAt,
&i.WorkspaceID,
&i.ProjectHistoryID,
&i.Name,
&i.BeforeID,
&i.AfterID,
&i.Transition,
@@ -825,9 +942,45 @@ func (q *sqlQuerier) GetWorkspaceHistoryByWorkspaceID(ctx context.Context, works
return items, nil
}
const getWorkspaceHistoryByWorkspaceIDAndName = `-- name: GetWorkspaceHistoryByWorkspaceIDAndName :one
SELECT
id, created_at, updated_at, completed_at, workspace_id, project_history_id, name, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
FROM
workspace_history
WHERE
workspace_id = $1
AND name = $2
`
type GetWorkspaceHistoryByWorkspaceIDAndNameParams struct {
WorkspaceID uuid.UUID `db:"workspace_id" json:"workspace_id"`
Name string `db:"name" json:"name"`
}
func (q *sqlQuerier) GetWorkspaceHistoryByWorkspaceIDAndName(ctx context.Context, arg GetWorkspaceHistoryByWorkspaceIDAndNameParams) (WorkspaceHistory, error) {
row := q.db.QueryRowContext(ctx, getWorkspaceHistoryByWorkspaceIDAndName, arg.WorkspaceID, arg.Name)
var i WorkspaceHistory
err := row.Scan(
&i.ID,
&i.CreatedAt,
&i.UpdatedAt,
&i.CompletedAt,
&i.WorkspaceID,
&i.ProjectHistoryID,
&i.Name,
&i.BeforeID,
&i.AfterID,
&i.Transition,
&i.Initiator,
&i.ProvisionerState,
&i.ProvisionJobID,
)
return i, err
}
const getWorkspaceHistoryByWorkspaceIDWithoutAfter = `-- name: GetWorkspaceHistoryByWorkspaceIDWithoutAfter :one
SELECT
id, created_at, updated_at, completed_at, workspace_id, project_history_id, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
id, created_at, updated_at, completed_at, workspace_id, project_history_id, name, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
FROM
workspace_history
WHERE
@@ -847,6 +1000,7 @@ func (q *sqlQuerier) GetWorkspaceHistoryByWorkspaceIDWithoutAfter(ctx context.Co
&i.CompletedAt,
&i.WorkspaceID,
&i.ProjectHistoryID,
&i.Name,
&i.BeforeID,
&i.AfterID,
&i.Transition,
@@ -857,6 +1011,53 @@ func (q *sqlQuerier) GetWorkspaceHistoryByWorkspaceIDWithoutAfter(ctx context.Co
return i, err
}
const getWorkspaceHistoryLogsByIDBefore = `-- name: GetWorkspaceHistoryLogsByIDBefore :many
SELECT
id, workspace_history_id, created_at, source, level, output
FROM
workspace_history_log
WHERE
workspace_history_id = $1
AND created_at <= $2
ORDER BY
created_at
`
type GetWorkspaceHistoryLogsByIDBeforeParams struct {
WorkspaceHistoryID uuid.UUID `db:"workspace_history_id" json:"workspace_history_id"`
CreatedAt time.Time `db:"created_at" json:"created_at"`
}
func (q *sqlQuerier) GetWorkspaceHistoryLogsByIDBefore(ctx context.Context, arg GetWorkspaceHistoryLogsByIDBeforeParams) ([]WorkspaceHistoryLog, error) {
rows, err := q.db.QueryContext(ctx, getWorkspaceHistoryLogsByIDBefore, arg.WorkspaceHistoryID, arg.CreatedAt)
if err != nil {
return nil, err
}
defer rows.Close()
var items []WorkspaceHistoryLog
for rows.Next() {
var i WorkspaceHistoryLog
if err := rows.Scan(
&i.ID,
&i.WorkspaceHistoryID,
&i.CreatedAt,
&i.Source,
&i.Level,
&i.Output,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const getWorkspaceResourcesByHistoryID = `-- name: GetWorkspaceResourcesByHistoryID :many
SELECT
id, created_at, workspace_history_id, type, name, workspace_agent_token, workspace_agent_id
@@ -1317,6 +1518,64 @@ func (q *sqlQuerier) InsertProjectHistory(ctx context.Context, arg InsertProject
return i, err
}
const insertProjectHistoryLogs = `-- name: InsertProjectHistoryLogs :many
INSERT INTO
project_history_log
SELECT
$1 :: uuid AS project_history_id,
unnset($2 :: uuid [ ]) AS id,
unnest($3 :: timestamptz [ ]) AS created_at,
unnset($4 :: log_source [ ]) as source,
unnset($5 :: log_level [ ]) as level,
unnset($6 :: varchar(1024) [ ]) as output RETURNING id, project_history_id, created_at, source, level, output
`
type InsertProjectHistoryLogsParams struct {
ProjectHistoryID uuid.UUID `db:"project_history_id" json:"project_history_id"`
ID []uuid.UUID `db:"id" json:"id"`
CreatedAt []time.Time `db:"created_at" json:"created_at"`
Source []LogSource `db:"source" json:"source"`
Level []LogLevel `db:"level" json:"level"`
Output []string `db:"output" json:"output"`
}
func (q *sqlQuerier) InsertProjectHistoryLogs(ctx context.Context, arg InsertProjectHistoryLogsParams) ([]ProjectHistoryLog, error) {
rows, err := q.db.QueryContext(ctx, insertProjectHistoryLogs,
arg.ProjectHistoryID,
pq.Array(arg.ID),
pq.Array(arg.CreatedAt),
pq.Array(arg.Source),
pq.Array(arg.Level),
pq.Array(arg.Output),
)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ProjectHistoryLog
for rows.Next() {
var i ProjectHistoryLog
if err := rows.Scan(
&i.ID,
&i.ProjectHistoryID,
&i.CreatedAt,
&i.Source,
&i.Level,
&i.Output,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const insertProjectParameter = `-- name: InsertProjectParameter :one
INSERT INTO
project_parameter (
@@ -1673,12 +1932,13 @@ INSERT INTO
workspace_id,
project_history_id,
before_id,
name,
transition,
initiator,
provision_job_id
)
VALUES
($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING id, created_at, updated_at, completed_at, workspace_id, project_history_id, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) RETURNING id, created_at, updated_at, completed_at, workspace_id, project_history_id, name, before_id, after_id, transition, initiator, provisioner_state, provision_job_id
`
type InsertWorkspaceHistoryParams struct {
@@ -1688,6 +1948,7 @@ type InsertWorkspaceHistoryParams struct {
WorkspaceID uuid.UUID `db:"workspace_id" json:"workspace_id"`
ProjectHistoryID uuid.UUID `db:"project_history_id" json:"project_history_id"`
BeforeID uuid.NullUUID `db:"before_id" json:"before_id"`
Name string `db:"name" json:"name"`
Transition WorkspaceTransition `db:"transition" json:"transition"`
Initiator string `db:"initiator" json:"initiator"`
ProvisionJobID uuid.UUID `db:"provision_job_id" json:"provision_job_id"`
@@ -1701,6 +1962,7 @@ func (q *sqlQuerier) InsertWorkspaceHistory(ctx context.Context, arg InsertWorks
arg.WorkspaceID,
arg.ProjectHistoryID,
arg.BeforeID,
arg.Name,
arg.Transition,
arg.Initiator,
arg.ProvisionJobID,
@@ -1713,6 +1975,7 @@ func (q *sqlQuerier) InsertWorkspaceHistory(ctx context.Context, arg InsertWorks
&i.CompletedAt,
&i.WorkspaceID,
&i.ProjectHistoryID,
&i.Name,
&i.BeforeID,
&i.AfterID,
&i.Transition,
@@ -1723,6 +1986,64 @@ func (q *sqlQuerier) InsertWorkspaceHistory(ctx context.Context, arg InsertWorks
return i, err
}
const insertWorkspaceHistoryLogs = `-- name: InsertWorkspaceHistoryLogs :many
INSERT INTO
workspace_history_log
SELECT
$1 :: uuid AS workspace_history_id,
unnset($2 :: uuid [ ]) AS id,
unnest($3 :: timestamptz [ ]) AS created_at,
unnset($4 :: log_source [ ]) as source,
unnset($5 :: log_level [ ]) as level,
unnset($6 :: varchar(1024) [ ]) as output RETURNING id, workspace_history_id, created_at, source, level, output
`
type InsertWorkspaceHistoryLogsParams struct {
WorkspaceHistoryID uuid.UUID `db:"workspace_history_id" json:"workspace_history_id"`
ID []uuid.UUID `db:"id" json:"id"`
CreatedAt []time.Time `db:"created_at" json:"created_at"`
Source []LogSource `db:"source" json:"source"`
Level []LogLevel `db:"level" json:"level"`
Output []string `db:"output" json:"output"`
}
func (q *sqlQuerier) InsertWorkspaceHistoryLogs(ctx context.Context, arg InsertWorkspaceHistoryLogsParams) ([]WorkspaceHistoryLog, error) {
rows, err := q.db.QueryContext(ctx, insertWorkspaceHistoryLogs,
arg.WorkspaceHistoryID,
pq.Array(arg.ID),
pq.Array(arg.CreatedAt),
pq.Array(arg.Source),
pq.Array(arg.Level),
pq.Array(arg.Output),
)
if err != nil {
return nil, err
}
defer rows.Close()
var items []WorkspaceHistoryLog
for rows.Next() {
var i WorkspaceHistoryLog
if err := rows.Scan(
&i.ID,
&i.WorkspaceHistoryID,
&i.CreatedAt,
&i.Source,
&i.Level,
&i.Output,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const insertWorkspaceResource = `-- name: InsertWorkspaceResource :one
INSERT INTO
workspace_resource (
@@ -1859,18 +2180,28 @@ UPDATE
workspace_history
SET
updated_at = $2,
after_id = $3
completed_at = $3,
after_id = $4,
provisioner_state = $5
WHERE
id = $1
`
type UpdateWorkspaceHistoryByIDParams struct {
ID uuid.UUID `db:"id" json:"id"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
AfterID uuid.NullUUID `db:"after_id" json:"after_id"`
ID uuid.UUID `db:"id" json:"id"`
UpdatedAt time.Time `db:"updated_at" json:"updated_at"`
CompletedAt sql.NullTime `db:"completed_at" json:"completed_at"`
AfterID uuid.NullUUID `db:"after_id" json:"after_id"`
ProvisionerState []byte `db:"provisioner_state" json:"provisioner_state"`
}
func (q *sqlQuerier) UpdateWorkspaceHistoryByID(ctx context.Context, arg UpdateWorkspaceHistoryByIDParams) error {
_, err := q.db.ExecContext(ctx, updateWorkspaceHistoryByID, arg.ID, arg.UpdatedAt, arg.AfterID)
_, err := q.db.ExecContext(ctx, updateWorkspaceHistoryByID,
arg.ID,
arg.UpdatedAt,
arg.CompletedAt,
arg.AfterID,
arg.ProvisionerState,
)
return err
}