Skip to content

Commit d3a4eb8

Browse files
committed
feat: Update generated schema for provisionerd
These changes were part of a bulk change to create provisionerd. They were ripped out for simpler reviewing.
1 parent bf90ded commit d3a4eb8

File tree

13 files changed

+1352
-615
lines changed

13 files changed

+1352
-615
lines changed

database/databasefake/databasefake.go

Lines changed: 126 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,18 @@ func New() database.Store {
1818
organizationMembers: make([]database.OrganizationMember, 0),
1919
users: make([]database.User, 0),
2020

21-
parameterValue: make([]database.ParameterValue, 0),
22-
project: make([]database.Project, 0),
23-
projectHistory: make([]database.ProjectHistory, 0),
24-
projectParameter: make([]database.ProjectParameter, 0),
25-
provisionerDaemons: make([]database.ProvisionerDaemon, 0),
26-
provisionerJobs: make([]database.ProvisionerJob, 0),
27-
workspace: make([]database.Workspace, 0),
28-
workspaceResource: make([]database.WorkspaceResource, 0),
29-
workspaceHistory: make([]database.WorkspaceHistory, 0),
30-
workspaceAgent: make([]database.WorkspaceAgent, 0),
21+
parameterValue: make([]database.ParameterValue, 0),
22+
project: make([]database.Project, 0),
23+
projectHistory: make([]database.ProjectHistory, 0),
24+
projectHistoryLog: make([]database.ProjectHistoryLog, 0),
25+
projectParameter: make([]database.ProjectParameter, 0),
26+
provisionerDaemons: make([]database.ProvisionerDaemon, 0),
27+
provisionerJobs: make([]database.ProvisionerJob, 0),
28+
workspace: make([]database.Workspace, 0),
29+
workspaceResource: make([]database.WorkspaceResource, 0),
30+
workspaceHistory: make([]database.WorkspaceHistory, 0),
31+
workspaceHistoryLog: make([]database.WorkspaceHistoryLog, 0),
32+
workspaceAgent: make([]database.WorkspaceAgent, 0),
3133
}
3234
}
3335

@@ -40,16 +42,18 @@ type fakeQuerier struct {
4042
users []database.User
4143

4244
// New tables
43-
parameterValue []database.ParameterValue
44-
project []database.Project
45-
projectHistory []database.ProjectHistory
46-
projectParameter []database.ProjectParameter
47-
provisionerDaemons []database.ProvisionerDaemon
48-
provisionerJobs []database.ProvisionerJob
49-
workspace []database.Workspace
50-
workspaceResource []database.WorkspaceResource
51-
workspaceHistory []database.WorkspaceHistory
52-
workspaceAgent []database.WorkspaceAgent
45+
parameterValue []database.ParameterValue
46+
project []database.Project
47+
projectHistory []database.ProjectHistory
48+
projectHistoryLog []database.ProjectHistoryLog
49+
projectParameter []database.ProjectParameter
50+
provisionerDaemons []database.ProvisionerDaemon
51+
provisionerJobs []database.ProvisionerJob
52+
workspace []database.Workspace
53+
workspaceAgent []database.WorkspaceAgent
54+
workspaceHistory []database.WorkspaceHistory
55+
workspaceHistoryLog []database.WorkspaceHistoryLog
56+
workspaceResource []database.WorkspaceResource
5357
}
5458

5559
// InTx doesn't rollback data properly for in-memory yet.
@@ -184,6 +188,23 @@ func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceIDWithoutAfter(_ context.Con
184188
return database.WorkspaceHistory{}, sql.ErrNoRows
185189
}
186190

191+
func (q *fakeQuerier) GetWorkspaceHistoryLogsByIDBefore(_ context.Context, arg database.GetWorkspaceHistoryLogsByIDBeforeParams) ([]database.WorkspaceHistoryLog, error) {
192+
logs := make([]database.WorkspaceHistoryLog, 0)
193+
for _, workspaceHistoryLog := range q.workspaceHistoryLog {
194+
if workspaceHistoryLog.WorkspaceHistoryID.String() != arg.WorkspaceHistoryID.String() {
195+
continue
196+
}
197+
if workspaceHistoryLog.CreatedAt.After(arg.CreatedAt) {
198+
continue
199+
}
200+
logs = append(logs, workspaceHistoryLog)
201+
}
202+
if len(logs) == 0 {
203+
return nil, sql.ErrNoRows
204+
}
205+
return logs, nil
206+
}
207+
187208
func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceID(_ context.Context, workspaceID uuid.UUID) ([]database.WorkspaceHistory, error) {
188209
history := make([]database.WorkspaceHistory, 0)
189210
for _, workspaceHistory := range q.workspaceHistory {
@@ -197,6 +218,19 @@ func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceID(_ context.Context, worksp
197218
return history, nil
198219
}
199220

221+
func (q *fakeQuerier) GetWorkspaceHistoryByWorkspaceIDAndName(_ context.Context, arg database.GetWorkspaceHistoryByWorkspaceIDAndNameParams) (database.WorkspaceHistory, error) {
222+
for _, workspaceHistory := range q.workspaceHistory {
223+
if workspaceHistory.WorkspaceID.String() != arg.WorkspaceID.String() {
224+
continue
225+
}
226+
if !strings.EqualFold(workspaceHistory.Name, arg.Name) {
227+
continue
228+
}
229+
return workspaceHistory, nil
230+
}
231+
return database.WorkspaceHistory{}, sql.ErrNoRows
232+
}
233+
200234
func (q *fakeQuerier) GetWorkspacesByProjectAndUserID(_ context.Context, arg database.GetWorkspacesByProjectAndUserIDParams) ([]database.Workspace, error) {
201235
workspaces := make([]database.Workspace, 0)
202236
for _, workspace := range q.workspace {
@@ -318,6 +352,36 @@ func (q *fakeQuerier) GetProjectHistoryByProjectID(_ context.Context, projectID
318352
return history, nil
319353
}
320354

355+
func (q *fakeQuerier) GetProjectHistoryByProjectIDAndName(_ context.Context, arg database.GetProjectHistoryByProjectIDAndNameParams) (database.ProjectHistory, error) {
356+
for _, projectHistory := range q.projectHistory {
357+
if projectHistory.ProjectID.String() != arg.ProjectID.String() {
358+
continue
359+
}
360+
if !strings.EqualFold(projectHistory.Name, arg.Name) {
361+
continue
362+
}
363+
return projectHistory, nil
364+
}
365+
return database.ProjectHistory{}, sql.ErrNoRows
366+
}
367+
368+
func (q *fakeQuerier) GetProjectHistoryLogsByIDBefore(_ context.Context, arg database.GetProjectHistoryLogsByIDBeforeParams) ([]database.ProjectHistoryLog, error) {
369+
logs := make([]database.ProjectHistoryLog, 0)
370+
for _, projectHistoryLog := range q.projectHistoryLog {
371+
if projectHistoryLog.ProjectHistoryID.String() != arg.ProjectHistoryID.String() {
372+
continue
373+
}
374+
if projectHistoryLog.CreatedAt.After(arg.CreatedAt) {
375+
continue
376+
}
377+
logs = append(logs, projectHistoryLog)
378+
}
379+
if len(logs) == 0 {
380+
return nil, sql.ErrNoRows
381+
}
382+
return logs, nil
383+
}
384+
321385
func (q *fakeQuerier) GetProjectHistoryByID(_ context.Context, projectHistoryID uuid.UUID) (database.ProjectHistory, error) {
322386
for _, projectHistory := range q.projectHistory {
323387
if projectHistory.ID.String() != projectHistoryID.String() {
@@ -371,6 +435,13 @@ func (q *fakeQuerier) GetOrganizationMemberByUserID(_ context.Context, arg datab
371435
return database.OrganizationMember{}, sql.ErrNoRows
372436
}
373437

438+
func (q *fakeQuerier) GetProvisionerDaemons(_ context.Context) ([]database.ProvisionerDaemon, error) {
439+
if len(q.provisionerDaemons) == 0 {
440+
return nil, sql.ErrNoRows
441+
}
442+
return q.provisionerDaemons, nil
443+
}
444+
374445
func (q *fakeQuerier) GetProvisionerDaemonByID(_ context.Context, id uuid.UUID) (database.ProvisionerDaemon, error) {
375446
for _, provisionerDaemon := range q.provisionerDaemons {
376447
if provisionerDaemon.ID.String() != id.String() {
@@ -486,6 +557,22 @@ func (q *fakeQuerier) InsertProjectHistory(_ context.Context, arg database.Inser
486557
return history, nil
487558
}
488559

560+
func (q *fakeQuerier) InsertProjectHistoryLogs(_ context.Context, arg database.InsertProjectHistoryLogsParams) ([]database.ProjectHistoryLog, error) {
561+
logs := make([]database.ProjectHistoryLog, 0)
562+
for index, output := range arg.Output {
563+
logs = append(logs, database.ProjectHistoryLog{
564+
ProjectHistoryID: arg.ProjectHistoryID,
565+
ID: arg.ID[index],
566+
CreatedAt: arg.CreatedAt[index],
567+
Source: arg.Source[index],
568+
Level: arg.Level[index],
569+
Output: output,
570+
})
571+
}
572+
q.projectHistoryLog = append(q.projectHistoryLog, logs...)
573+
return logs, nil
574+
}
575+
489576
func (q *fakeQuerier) InsertProjectParameter(_ context.Context, arg database.InsertProjectParameterParams) (database.ProjectParameter, error) {
490577
//nolint:gosimple
491578
param := database.ProjectParameter{
@@ -586,6 +673,7 @@ func (q *fakeQuerier) InsertWorkspaceHistory(_ context.Context, arg database.Ins
586673
CreatedAt: arg.CreatedAt,
587674
UpdatedAt: arg.UpdatedAt,
588675
WorkspaceID: arg.WorkspaceID,
676+
Name: arg.Name,
589677
ProjectHistoryID: arg.ProjectHistoryID,
590678
BeforeID: arg.BeforeID,
591679
Transition: arg.Transition,
@@ -596,6 +684,22 @@ func (q *fakeQuerier) InsertWorkspaceHistory(_ context.Context, arg database.Ins
596684
return workspaceHistory, nil
597685
}
598686

687+
func (q *fakeQuerier) InsertWorkspaceHistoryLogs(_ context.Context, arg database.InsertWorkspaceHistoryLogsParams) ([]database.WorkspaceHistoryLog, error) {
688+
logs := make([]database.WorkspaceHistoryLog, 0)
689+
for index, output := range arg.Output {
690+
logs = append(logs, database.WorkspaceHistoryLog{
691+
WorkspaceHistoryID: arg.WorkspaceHistoryID,
692+
ID: arg.ID[index],
693+
CreatedAt: arg.CreatedAt[index],
694+
Source: arg.Source[index],
695+
Level: arg.Level[index],
696+
Output: output,
697+
})
698+
}
699+
q.workspaceHistoryLog = append(q.workspaceHistoryLog, logs...)
700+
return logs, nil
701+
}
702+
599703
func (q *fakeQuerier) InsertWorkspaceResource(_ context.Context, arg database.InsertWorkspaceResourceParams) (database.WorkspaceResource, error) {
600704
workspaceResource := database.WorkspaceResource{
601705
ID: arg.ID,
@@ -659,7 +763,9 @@ func (q *fakeQuerier) UpdateWorkspaceHistoryByID(_ context.Context, arg database
659763
continue
660764
}
661765
workspaceHistory.UpdatedAt = arg.UpdatedAt
766+
workspaceHistory.CompletedAt = arg.CompletedAt
662767
workspaceHistory.AfterID = arg.AfterID
768+
workspaceHistory.ProvisionerState = arg.ProvisionerState
663769
q.workspaceHistory[index] = workspaceHistory
664770
return nil
665771
}

database/dump.sql

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,12 @@ CREATE TYPE log_level AS ENUM (
55
'debug',
66
'info',
77
'warn',
8-
'error',
9-
'fatal'
8+
'error'
9+
);
10+
11+
CREATE TYPE log_source AS ENUM (
12+
'provisioner_daemon',
13+
'provisioner'
1014
);
1115

1216
CREATE TYPE login_type AS ENUM (
@@ -142,6 +146,15 @@ CREATE TABLE project_history (
142146
import_job_id uuid NOT NULL
143147
);
144148

149+
CREATE TABLE project_history_log (
150+
id uuid NOT NULL,
151+
project_history_id uuid NOT NULL,
152+
created_at timestamp with time zone NOT NULL,
153+
source log_source NOT NULL,
154+
level log_level NOT NULL,
155+
output character varying(1024) NOT NULL
156+
);
157+
145158
CREATE TABLE project_parameter (
146159
id uuid NOT NULL,
147160
created_at timestamp with time zone NOT NULL,
@@ -233,6 +246,7 @@ CREATE TABLE workspace_history (
233246
completed_at timestamp with time zone,
234247
workspace_id uuid NOT NULL,
235248
project_history_id uuid NOT NULL,
249+
name character varying(64) NOT NULL,
236250
before_id uuid,
237251
after_id uuid,
238252
transition workspace_transition NOT NULL,
@@ -241,13 +255,13 @@ CREATE TABLE workspace_history (
241255
provision_job_id uuid NOT NULL
242256
);
243257

244-
CREATE TABLE workspace_log (
245-
workspace_id uuid NOT NULL,
258+
CREATE TABLE workspace_history_log (
259+
id uuid NOT NULL,
246260
workspace_history_id uuid NOT NULL,
247-
created timestamp with time zone NOT NULL,
248-
logged_by character varying(255),
261+
created_at timestamp with time zone NOT NULL,
262+
source log_source NOT NULL,
249263
level log_level NOT NULL,
250-
log jsonb NOT NULL
264+
output character varying(1024) NOT NULL
251265
);
252266

253267
CREATE TABLE workspace_resource (
@@ -269,6 +283,9 @@ ALTER TABLE ONLY parameter_value
269283
ALTER TABLE ONLY project_history
270284
ADD CONSTRAINT project_history_id_key UNIQUE (id);
271285

286+
ALTER TABLE ONLY project_history_log
287+
ADD CONSTRAINT project_history_log_id_key UNIQUE (id);
288+
272289
ALTER TABLE ONLY project_history
273290
ADD CONSTRAINT project_history_project_id_name_key UNIQUE (project_id, name);
274291

@@ -299,9 +316,18 @@ ALTER TABLE ONLY workspace_agent
299316
ALTER TABLE ONLY workspace_history
300317
ADD CONSTRAINT workspace_history_id_key UNIQUE (id);
301318

319+
ALTER TABLE ONLY workspace_history_log
320+
ADD CONSTRAINT workspace_history_log_id_key UNIQUE (id);
321+
322+
ALTER TABLE ONLY workspace_history
323+
ADD CONSTRAINT workspace_history_workspace_id_name_key UNIQUE (workspace_id, name);
324+
302325
ALTER TABLE ONLY workspace
303326
ADD CONSTRAINT workspace_id_key UNIQUE (id);
304327

328+
ALTER TABLE ONLY workspace
329+
ADD CONSTRAINT workspace_owner_id_name_key UNIQUE (owner_id, name);
330+
305331
ALTER TABLE ONLY workspace_resource
306332
ADD CONSTRAINT workspace_resource_id_key UNIQUE (id);
307333

@@ -311,7 +337,8 @@ ALTER TABLE ONLY workspace_resource
311337
ALTER TABLE ONLY workspace_resource
312338
ADD CONSTRAINT workspace_resource_workspace_history_id_name_key UNIQUE (workspace_history_id, name);
313339

314-
CREATE INDEX workspace_log_index ON workspace_log USING btree (workspace_id, workspace_history_id);
340+
ALTER TABLE ONLY project_history_log
341+
ADD CONSTRAINT project_history_log_project_history_id_fkey FOREIGN KEY (project_history_id) REFERENCES project_history(id) ON DELETE CASCADE;
315342

316343
ALTER TABLE ONLY project_history
317344
ADD CONSTRAINT project_history_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
@@ -325,18 +352,15 @@ ALTER TABLE ONLY provisioner_job
325352
ALTER TABLE ONLY workspace_agent
326353
ADD CONSTRAINT workspace_agent_workspace_resource_id_fkey FOREIGN KEY (workspace_resource_id) REFERENCES workspace_resource(id) ON DELETE CASCADE;
327354

355+
ALTER TABLE ONLY workspace_history_log
356+
ADD CONSTRAINT workspace_history_log_workspace_history_id_fkey FOREIGN KEY (workspace_history_id) REFERENCES workspace_history(id) ON DELETE CASCADE;
357+
328358
ALTER TABLE ONLY workspace_history
329359
ADD CONSTRAINT workspace_history_project_history_id_fkey FOREIGN KEY (project_history_id) REFERENCES project_history(id) ON DELETE CASCADE;
330360

331361
ALTER TABLE ONLY workspace_history
332362
ADD CONSTRAINT workspace_history_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspace(id) ON DELETE CASCADE;
333363

334-
ALTER TABLE ONLY workspace_log
335-
ADD CONSTRAINT workspace_log_workspace_history_id_fkey FOREIGN KEY (workspace_history_id) REFERENCES workspace_history(id) ON DELETE CASCADE;
336-
337-
ALTER TABLE ONLY workspace_log
338-
ADD CONSTRAINT workspace_log_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspace(id) ON DELETE CASCADE;
339-
340364
ALTER TABLE ONLY workspace
341365
ADD CONSTRAINT workspace_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
342366

database/migrations/000002_projects.up.sql

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,25 @@ CREATE TABLE project_parameter (
9090
validation_value_type varchar(64) NOT NULL,
9191
UNIQUE(project_history_id, name)
9292
);
93+
94+
CREATE TYPE log_level AS ENUM (
95+
'trace',
96+
'debug',
97+
'info',
98+
'warn',
99+
'error'
100+
);
101+
102+
CREATE TYPE log_source AS ENUM (
103+
'provisioner_daemon',
104+
'provisioner'
105+
);
106+
107+
CREATE TABLE project_history_log (
108+
id uuid NOT NULL UNIQUE,
109+
project_history_id uuid NOT NULL REFERENCES project_history (id) ON DELETE CASCADE,
110+
created_at timestamptz NOT NULL,
111+
source log_source NOT NULL,
112+
level log_level NOT NULL,
113+
output varchar(1024) NOT NULL
114+
);

0 commit comments

Comments
 (0)