chore: pluralize table names (#463)

This commit is contained in:
Colin Adler
2022-03-17 18:10:46 -05:00
committed by GitHub
parent edd8345658
commit 706e60bb3b
21 changed files with 341 additions and 249 deletions
+97 -97
View File
@@ -87,7 +87,7 @@ CREATE TABLE api_keys (
devurl_token boolean DEFAULT false NOT NULL
);
CREATE TABLE file (
CREATE TABLE files (
hash character varying(64) NOT NULL,
created_at timestamp with time zone NOT NULL,
created_by text NOT NULL,
@@ -122,7 +122,7 @@ CREATE TABLE organizations (
workspace_auto_off boolean DEFAULT false NOT NULL
);
CREATE TABLE parameter_schema (
CREATE TABLE parameter_schemas (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
job_id uuid NOT NULL,
@@ -141,7 +141,7 @@ CREATE TABLE parameter_schema (
validation_value_type character varying(64) NOT NULL
);
CREATE TABLE parameter_value (
CREATE TABLE parameter_values (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
@@ -153,17 +153,7 @@ CREATE TABLE parameter_value (
destination_scheme parameter_destination_scheme NOT NULL
);
CREATE TABLE project (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
organization_id text NOT NULL,
name character varying(64) NOT NULL,
provisioner provisioner_type NOT NULL,
active_version_id uuid NOT NULL
);
CREATE TABLE project_version (
CREATE TABLE project_versions (
id uuid NOT NULL,
project_id uuid,
organization_id text NOT NULL,
@@ -174,7 +164,17 @@ CREATE TABLE project_version (
job_id uuid NOT NULL
);
CREATE TABLE provisioner_daemon (
CREATE TABLE projects (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
organization_id text NOT NULL,
name character varying(64) NOT NULL,
provisioner provisioner_type NOT NULL,
active_version_id uuid NOT NULL
);
CREATE TABLE provisioner_daemons (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone,
@@ -183,7 +183,16 @@ CREATE TABLE provisioner_daemon (
provisioners provisioner_type[] NOT NULL
);
CREATE TABLE provisioner_job (
CREATE TABLE provisioner_job_logs (
id uuid NOT NULL,
job_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 provisioner_jobs (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
@@ -201,15 +210,6 @@ CREATE TABLE provisioner_job (
worker_id uuid
);
CREATE TABLE provisioner_job_log (
id uuid NOT NULL,
job_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 users (
id text NOT NULL,
email text NOT NULL,
@@ -232,16 +232,7 @@ CREATE TABLE users (
shell text DEFAULT ''::text NOT NULL
);
CREATE TABLE workspace (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
owner_id text NOT NULL,
project_id uuid NOT NULL,
name character varying(64) NOT NULL
);
CREATE TABLE workspace_agent (
CREATE TABLE workspace_agents (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone,
@@ -254,7 +245,7 @@ CREATE TABLE workspace_agent (
resource_metadata jsonb
);
CREATE TABLE workspace_build (
CREATE TABLE workspace_builds (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
@@ -269,7 +260,7 @@ CREATE TABLE workspace_build (
job_id uuid NOT NULL
);
CREATE TABLE workspace_resource (
CREATE TABLE workspace_resources (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
job_id uuid NOT NULL,
@@ -279,93 +270,102 @@ CREATE TABLE workspace_resource (
agent_id uuid
);
ALTER TABLE ONLY file
ADD CONSTRAINT file_hash_key UNIQUE (hash);
CREATE TABLE workspaces (
id uuid NOT NULL,
created_at timestamp with time zone NOT NULL,
updated_at timestamp with time zone NOT NULL,
owner_id text NOT NULL,
project_id uuid NOT NULL,
name character varying(64) NOT NULL
);
ALTER TABLE ONLY parameter_schema
ADD CONSTRAINT parameter_schema_id_key UNIQUE (id);
ALTER TABLE ONLY files
ADD CONSTRAINT files_hash_key UNIQUE (hash);
ALTER TABLE ONLY parameter_schema
ADD CONSTRAINT parameter_schema_job_id_name_key UNIQUE (job_id, name);
ALTER TABLE ONLY parameter_schemas
ADD CONSTRAINT parameter_schemas_id_key UNIQUE (id);
ALTER TABLE ONLY parameter_value
ADD CONSTRAINT parameter_value_id_key UNIQUE (id);
ALTER TABLE ONLY parameter_schemas
ADD CONSTRAINT parameter_schemas_job_id_name_key UNIQUE (job_id, name);
ALTER TABLE ONLY parameter_value
ADD CONSTRAINT parameter_value_scope_id_name_key UNIQUE (scope_id, name);
ALTER TABLE ONLY parameter_values
ADD CONSTRAINT parameter_values_id_key UNIQUE (id);
ALTER TABLE ONLY project
ADD CONSTRAINT project_id_key UNIQUE (id);
ALTER TABLE ONLY parameter_values
ADD CONSTRAINT parameter_values_scope_id_name_key UNIQUE (scope_id, name);
ALTER TABLE ONLY project
ADD CONSTRAINT project_organization_id_name_key UNIQUE (organization_id, name);
ALTER TABLE ONLY project_versions
ADD CONSTRAINT project_versions_id_key UNIQUE (id);
ALTER TABLE ONLY project_version
ADD CONSTRAINT project_version_id_key UNIQUE (id);
ALTER TABLE ONLY project_versions
ADD CONSTRAINT project_versions_project_id_name_key UNIQUE (project_id, name);
ALTER TABLE ONLY project_version
ADD CONSTRAINT project_version_project_id_name_key UNIQUE (project_id, name);
ALTER TABLE ONLY projects
ADD CONSTRAINT projects_id_key UNIQUE (id);
ALTER TABLE ONLY provisioner_daemon
ADD CONSTRAINT provisioner_daemon_id_key UNIQUE (id);
ALTER TABLE ONLY projects
ADD CONSTRAINT projects_organization_id_name_key UNIQUE (organization_id, name);
ALTER TABLE ONLY provisioner_daemon
ADD CONSTRAINT provisioner_daemon_name_key UNIQUE (name);
ALTER TABLE ONLY provisioner_daemons
ADD CONSTRAINT provisioner_daemons_id_key UNIQUE (id);
ALTER TABLE ONLY provisioner_job
ADD CONSTRAINT provisioner_job_id_key UNIQUE (id);
ALTER TABLE ONLY provisioner_daemons
ADD CONSTRAINT provisioner_daemons_name_key UNIQUE (name);
ALTER TABLE ONLY provisioner_job_log
ADD CONSTRAINT provisioner_job_log_id_key UNIQUE (id);
ALTER TABLE ONLY provisioner_job_logs
ADD CONSTRAINT provisioner_job_logs_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_agent
ADD CONSTRAINT workspace_agent_auth_token_key UNIQUE (auth_token);
ALTER TABLE ONLY provisioner_jobs
ADD CONSTRAINT provisioner_jobs_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_agent
ADD CONSTRAINT workspace_agent_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_agents
ADD CONSTRAINT workspace_agents_auth_token_key UNIQUE (auth_token);
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_agents
ADD CONSTRAINT workspace_agents_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_job_id_key UNIQUE (job_id);
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_workspace_id_name_key UNIQUE (workspace_id, name);
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_job_id_key UNIQUE (job_id);
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_workspace_id_name_key UNIQUE (workspace_id, name);
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_owner_id_name_key UNIQUE (owner_id, name);
ALTER TABLE ONLY workspace_resources
ADD CONSTRAINT workspace_resources_id_key UNIQUE (id);
ALTER TABLE ONLY workspace_resource
ADD CONSTRAINT workspace_resource_id_key UNIQUE (id);
ALTER TABLE ONLY workspaces
ADD CONSTRAINT workspaces_id_key UNIQUE (id);
ALTER TABLE ONLY parameter_schema
ADD CONSTRAINT parameter_schema_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_job(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspaces
ADD CONSTRAINT workspaces_owner_id_name_key UNIQUE (owner_id, name);
ALTER TABLE ONLY project_version
ADD CONSTRAINT project_version_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
ALTER TABLE ONLY parameter_schemas
ADD CONSTRAINT parameter_schemas_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_jobs(id) ON DELETE CASCADE;
ALTER TABLE ONLY provisioner_job_log
ADD CONSTRAINT provisioner_job_log_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_job(id) ON DELETE CASCADE;
ALTER TABLE ONLY project_versions
ADD CONSTRAINT project_versions_project_id_fkey FOREIGN KEY (project_id) REFERENCES projects(id);
ALTER TABLE ONLY workspace_agent
ADD CONSTRAINT workspace_agent_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES workspace_resource(id) ON DELETE CASCADE;
ALTER TABLE ONLY provisioner_job_logs
ADD CONSTRAINT provisioner_job_logs_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_jobs(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_job(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_agents
ADD CONSTRAINT workspace_agents_resource_id_fkey FOREIGN KEY (resource_id) REFERENCES workspace_resources(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_project_version_id_fkey FOREIGN KEY (project_version_id) REFERENCES project_version(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_jobs(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_build
ADD CONSTRAINT workspace_build_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspace(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_project_version_id_fkey FOREIGN KEY (project_version_id) REFERENCES project_versions(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace
ADD CONSTRAINT workspace_project_id_fkey FOREIGN KEY (project_id) REFERENCES project(id);
ALTER TABLE ONLY workspace_builds
ADD CONSTRAINT workspace_builds_workspace_id_fkey FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_resource
ADD CONSTRAINT workspace_resource_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_job(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspace_resources
ADD CONSTRAINT workspace_resources_job_id_fkey FOREIGN KEY (job_id) REFERENCES provisioner_jobs(id) ON DELETE CASCADE;
ALTER TABLE ONLY workspaces
ADD CONSTRAINT workspaces_project_id_fkey FOREIGN KEY (project_id) REFERENCES projects(id);
+1 -1
View File
@@ -24,7 +24,7 @@ func main() {
if err != nil {
panic(err)
}
err = database.Migrate(db)
err = database.MigrateUp(db)
if err != nil {
panic(err)
}
+39 -5
View File
@@ -14,27 +14,61 @@ import (
//go:embed migrations/*.sql
var migrations embed.FS
// Migrate runs SQL migrations to ensure the database schema is up-to-date.
func Migrate(db *sql.DB) error {
func migrateSetup(db *sql.DB) (*migrate.Migrate, error) {
sourceDriver, err := iofs.New(migrations, "migrations")
if err != nil {
return xerrors.Errorf("create iofs: %w", err)
return nil, xerrors.Errorf("create iofs: %w", err)
}
dbDriver, err := postgres.WithInstance(db, &postgres.Config{})
if err != nil {
return xerrors.Errorf("wrap postgres connection: %w", err)
return nil, xerrors.Errorf("wrap postgres connection: %w", err)
}
m, err := migrate.NewWithInstance("", sourceDriver, "", dbDriver)
if err != nil {
return xerrors.Errorf("migrate: %w", err)
return nil, xerrors.Errorf("new migrate instance: %w", err)
}
return m, nil
}
// MigrateUp runs SQL migrations to ensure the database schema is up-to-date.
func MigrateUp(db *sql.DB) error {
m, err := migrateSetup(db)
if err != nil {
return xerrors.Errorf("migrate setup: %w", err)
}
err = m.Up()
if err != nil {
if errors.Is(err, migrate.ErrNoChange) {
// It's OK if no changes happened!
return nil
}
return xerrors.Errorf("up: %w", err)
}
return nil
}
// MigrateDown runs all down SQL migrations.
func MigrateDown(db *sql.DB) error {
m, err := migrateSetup(db)
if err != nil {
return xerrors.Errorf("migrate setup: %w", err)
}
err = m.Down()
if err != nil {
if errors.Is(err, migrate.ErrNoChange) {
// It's OK if no changes happened!
return nil
}
return xerrors.Errorf("down: %w", err)
}
return nil
}
+37 -13
View File
@@ -27,27 +27,51 @@ func TestMigrate(t *testing.T) {
t.Run("Once", func(t *testing.T) {
t.Parallel()
connection, closeFn, err := postgres.Open()
require.NoError(t, err)
defer closeFn()
db, err := sql.Open("postgres", connection)
require.NoError(t, err)
defer db.Close()
err = database.Migrate(db)
db := testSQLDB(t)
err := database.MigrateUp(db)
require.NoError(t, err)
})
t.Run("Twice", func(t *testing.T) {
t.Parallel()
connection, closeFn, err := postgres.Open()
db := testSQLDB(t)
err := database.MigrateUp(db)
require.NoError(t, err)
defer closeFn()
db, err := sql.Open("postgres", connection)
err = database.MigrateUp(db)
require.NoError(t, err)
defer db.Close()
err = database.Migrate(db)
})
t.Run("UpDownUp", func(t *testing.T) {
t.Parallel()
db := testSQLDB(t)
err := database.MigrateUp(db)
require.NoError(t, err)
err = database.Migrate(db)
err = database.MigrateDown(db)
require.NoError(t, err)
err = database.MigrateUp(db)
require.NoError(t, err)
})
}
func testSQLDB(t testing.TB) *sql.DB {
t.Helper()
connection, closeFn, err := postgres.Open()
require.NoError(t, err)
t.Cleanup(closeFn)
db, err := sql.Open("postgres", connection)
require.NoError(t, err)
t.Cleanup(func() { _ = db.Close() })
return db
}
@@ -0,0 +1,6 @@
DROP TABLE project_versions;
DROP TABLE projects;
DROP TYPE provisioner_type;
DROP TABLE files;
+4 -4
View File
@@ -1,5 +1,5 @@
-- Store arbitrary data like project source code or avatars.
CREATE TABLE file (
CREATE TABLE files (
hash varchar(64) NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
created_by text NOT NULL,
@@ -11,7 +11,7 @@ CREATE TYPE provisioner_type AS ENUM ('echo', 'terraform');
-- Project defines infrastructure that your software project
-- requires for development.
CREATE TABLE project (
CREATE TABLE projects (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
@@ -30,10 +30,10 @@ CREATE TABLE project (
-- Project Versions store historical project data. When a Project Version is imported,
-- an "import" job is queued to parse parameters. A Project Version
-- can only be used if the import job succeeds.
CREATE TABLE project_version (
CREATE TABLE project_versions (
id uuid NOT NULL UNIQUE,
-- This should be indexed.
project_id uuid REFERENCES project (id),
project_id uuid REFERENCES projects (id),
organization_id text NOT NULL,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
@@ -0,0 +1,2 @@
DROP TYPE workspace_transition;
DROP TABLE workspaces
+2 -2
View File
@@ -1,9 +1,9 @@
CREATE TABLE workspace (
CREATE TABLE workspaces (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
owner_id text NOT NULL,
project_id uuid NOT NULL REFERENCES project (id),
project_id uuid NOT NULL REFERENCES projects (id),
name varchar(64) NOT NULL,
UNIQUE(owner_id, name)
);
+21
View File
@@ -0,0 +1,21 @@
DROP TABLE workspace_builds;
DROP TABLE parameter_values;
DROP TABLE parameter_schemas;
DROP TYPE parameter_destination_scheme;
DROP TYPE parameter_source_scheme;
DROP TYPE parameter_type_system;
DROP TYPE parameter_scope;
DROP TABLE workspace_agents;
DROP TABLE workspace_resources;
DROP TABLE provisioner_job_logs;
DROP TYPE log_source;
DROP TYPE log_level;
DROP TABLE provisioner_jobs;
DROP TYPE provisioner_storage_method;
DROP TYPE provisioner_job_type;
DROP TABLE provisioner_daemons;
+16 -16
View File
@@ -1,4 +1,4 @@
CREATE TABLE IF NOT EXISTS provisioner_daemon (
CREATE TABLE IF NOT EXISTS provisioner_daemons (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz,
@@ -16,7 +16,7 @@ CREATE TYPE provisioner_job_type AS ENUM (
CREATE TYPE provisioner_storage_method AS ENUM ('file');
CREATE TABLE IF NOT EXISTS provisioner_job (
CREATE TABLE IF NOT EXISTS provisioner_jobs (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
@@ -47,30 +47,30 @@ CREATE TYPE log_source AS ENUM (
'provisioner'
);
CREATE TABLE IF NOT EXISTS provisioner_job_log (
CREATE TABLE IF NOT EXISTS provisioner_job_logs (
id uuid NOT NULL UNIQUE,
job_id uuid NOT NULL REFERENCES provisioner_job (id) ON DELETE CASCADE,
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
created_at timestamptz NOT NULL,
source log_source NOT NULL,
level log_level NOT NULL,
output varchar(1024) NOT NULL
);
CREATE TABLE workspace_resource (
CREATE TABLE workspace_resources (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
job_id uuid NOT NULL REFERENCES provisioner_job(id) ON DELETE CASCADE,
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
transition workspace_transition NOT NULL,
type varchar(256) NOT NULL,
name varchar(64) NOT NULL,
agent_id uuid
);
CREATE TABLE workspace_agent (
CREATE TABLE workspace_agents (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz,
resource_id uuid NOT NULL REFERENCES workspace_resource (id) ON DELETE CASCADE,
resource_id uuid NOT NULL REFERENCES workspace_resources (id) ON DELETE CASCADE,
auth_token uuid NOT NULL UNIQUE,
auth_instance_id varchar(64),
environment_variables jsonb,
@@ -105,10 +105,10 @@ CREATE TYPE parameter_destination_scheme AS ENUM('none', 'environment_variable',
-- Parameter types, description, and validation will produce
-- a UI for users to enter values.
-- Needs to be made consistent with the examples below.
CREATE TABLE parameter_schema (
CREATE TABLE parameter_schemas (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
job_id uuid NOT NULL REFERENCES provisioner_job(id) ON DELETE CASCADE,
job_id uuid NOT NULL REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
name varchar(64) NOT NULL,
description varchar(8192) NOT NULL DEFAULT '',
default_source_scheme parameter_source_scheme,
@@ -130,7 +130,7 @@ CREATE TABLE parameter_schema (
);
-- Parameters are provided to jobs for provisioning and to workspaces.
CREATE TABLE parameter_value (
CREATE TABLE parameter_values (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
@@ -144,12 +144,12 @@ CREATE TABLE parameter_value (
UNIQUE(scope_id, name)
);
CREATE TABLE workspace_build (
CREATE TABLE workspace_builds (
id uuid NOT NULL UNIQUE,
created_at timestamptz NOT NULL,
updated_at timestamptz NOT NULL,
workspace_id uuid NOT NULL REFERENCES workspace (id) ON DELETE CASCADE,
project_version_id uuid NOT NULL REFERENCES project_version (id) ON DELETE CASCADE,
workspace_id uuid NOT NULL REFERENCES workspaces (id) ON DELETE CASCADE,
project_version_id uuid NOT NULL REFERENCES project_versions (id) ON DELETE CASCADE,
name varchar(64) NOT NULL,
before_id uuid,
after_id uuid,
@@ -158,6 +158,6 @@ CREATE TABLE workspace_build (
-- State stored by the provisioner
provisioner_state bytea,
-- Job ID of the action
job_id uuid NOT NULL UNIQUE REFERENCES provisioner_job(id) ON DELETE CASCADE,
job_id uuid NOT NULL UNIQUE REFERENCES provisioner_jobs (id) ON DELETE CASCADE,
UNIQUE(workspace_id, name)
);
);
+4 -1
View File
@@ -1,4 +1,7 @@
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
if [ -z "$1" ]; then
@@ -6,6 +9,6 @@ if [ -z "$1" ]; then
exit 1
fi
migrate create -ext sql -dir . -seq $1
migrate create -ext sql -dir . -seq "$1"
echo "Run \"make gen\" to generate models."
+50 -50
View File
@@ -12,7 +12,7 @@
-- https://www.postgresql.org/docs/9.5/sql-select.html#SQL-FOR-UPDATE-SHARE
-- name: AcquireProvisionerJob :one
UPDATE
provisioner_job
provisioner_jobs
SET
started_at = @started_at,
updated_at = @started_at,
@@ -22,7 +22,7 @@ WHERE
SELECT
id
FROM
provisioner_job AS nested
provisioner_jobs AS nested
WHERE
nested.started_at IS NULL
AND nested.cancelled_at IS NULL
@@ -38,7 +38,7 @@ WHERE
-- name: DeleteParameterValueByID :exec
DELETE FROM
parameter_value
parameter_values
WHERE
id = $1;
@@ -56,7 +56,7 @@ LIMIT
SELECT
*
FROM
file
files
WHERE
hash = $1
LIMIT
@@ -137,7 +137,7 @@ LIMIT
SELECT
*
FROM
parameter_value
parameter_values
WHERE
scope = $1
AND scope_id = $2;
@@ -146,7 +146,7 @@ WHERE
SELECT
*
FROM
parameter_value
parameter_values
WHERE
scope = $1
AND scope_id = $2
@@ -158,7 +158,7 @@ LIMIT
SELECT
*
FROM
project
projects
WHERE
id = $1
LIMIT
@@ -168,7 +168,7 @@ LIMIT
SELECT
*
FROM
project
projects
WHERE
organization_id = @organization_id
AND LOWER(name) = LOWER(@name)
@@ -179,7 +179,7 @@ LIMIT
SELECT
*
FROM
project
projects
WHERE
organization_id = $1;
@@ -187,7 +187,7 @@ WHERE
SELECT
*
FROM
parameter_schema
parameter_schemas
WHERE
job_id = $1;
@@ -195,7 +195,7 @@ WHERE
SELECT
*
FROM
project_version
project_versions
WHERE
project_id = $1 :: uuid;
@@ -203,7 +203,7 @@ WHERE
SELECT
*
FROM
project_version
project_versions
WHERE
project_id = $1
AND name = $2;
@@ -212,7 +212,7 @@ WHERE
SELECT
*
FROM
project_version
project_versions
WHERE
id = $1;
@@ -220,7 +220,7 @@ WHERE
SELECT
*
FROM
provisioner_job_log
provisioner_job_logs
WHERE
job_id = @job_id
AND (
@@ -234,7 +234,7 @@ ORDER BY
SELECT
*
FROM
provisioner_daemon
provisioner_daemons
WHERE
id = $1;
@@ -242,13 +242,13 @@ WHERE
SELECT
*
FROM
provisioner_daemon;
provisioner_daemons;
-- name: GetWorkspaceAgentByAuthToken :one
SELECT
*
FROM
workspace_agent
workspace_agents
WHERE
auth_token = $1;
@@ -256,7 +256,7 @@ WHERE
SELECT
*
FROM
workspace_agent
workspace_agents
WHERE
auth_instance_id = @auth_instance_id :: text
ORDER BY
@@ -266,7 +266,7 @@ ORDER BY
SELECT
*
FROM
provisioner_job
provisioner_jobs
WHERE
id = $1;
@@ -274,7 +274,7 @@ WHERE
SELECT
*
FROM
provisioner_job
provisioner_jobs
WHERE
id = ANY(@ids :: uuid [ ]);
@@ -282,7 +282,7 @@ WHERE
SELECT
*
FROM
workspace
workspaces
WHERE
id = $1
LIMIT
@@ -292,7 +292,7 @@ LIMIT
SELECT
*
FROM
workspace
workspaces
WHERE
owner_id = $1;
@@ -300,7 +300,7 @@ WHERE
SELECT
*
FROM
workspace
workspaces
WHERE
owner_id = @owner_id
AND LOWER(name) = LOWER(@name);
@@ -310,7 +310,7 @@ SELECT
project_id,
COUNT(DISTINCT owner_id)
FROM
workspace
workspaces
WHERE
project_id = ANY(@ids :: uuid [ ])
GROUP BY
@@ -321,7 +321,7 @@ GROUP BY
SELECT
*
FROM
workspace_build
workspace_builds
WHERE
id = $1
LIMIT
@@ -331,7 +331,7 @@ LIMIT
SELECT
*
FROM
workspace_build
workspace_builds
WHERE
job_id = $1
LIMIT
@@ -341,7 +341,7 @@ LIMIT
SELECT
*
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1
AND name = $2;
@@ -350,7 +350,7 @@ WHERE
SELECT
*
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1;
@@ -358,7 +358,7 @@ WHERE
SELECT
*
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1
AND after_id IS NULL
@@ -369,7 +369,7 @@ LIMIT
SELECT
*
FROM
workspace_resource
workspace_resources
WHERE
id = $1;
@@ -377,7 +377,7 @@ WHERE
SELECT
*
FROM
workspace_resource
workspace_resources
WHERE
job_id = $1;
@@ -385,7 +385,7 @@ WHERE
SELECT
*
FROM
workspace_agent
workspace_agents
WHERE
resource_id = $1;
@@ -429,13 +429,13 @@ VALUES
-- name: InsertFile :one
INSERT INTO
file (hash, created_at, created_by, mimetype, data)
files (hash, created_at, created_by, mimetype, data)
VALUES
($1, $2, $3, $4, $5) RETURNING *;
-- name: InsertProvisionerJobLogs :many
INSERT INTO
provisioner_job_log
provisioner_job_logs
SELECT
unnest(@id :: uuid [ ]) AS id,
@job_id :: uuid AS job_id,
@@ -464,7 +464,7 @@ VALUES
-- name: InsertParameterValue :one
INSERT INTO
parameter_value (
parameter_values (
id,
name,
created_at,
@@ -480,7 +480,7 @@ VALUES
-- name: InsertProject :one
INSERT INTO
project (
projects (
id,
created_at,
updated_at,
@@ -494,7 +494,7 @@ VALUES
-- name: InsertWorkspaceResource :one
INSERT INTO
workspace_resource (
workspace_resources (
id,
created_at,
job_id,
@@ -508,7 +508,7 @@ VALUES
-- name: InsertProjectVersion :one
INSERT INTO
project_version (
project_versions (
id,
project_id,
organization_id,
@@ -523,7 +523,7 @@ VALUES
-- name: InsertParameterSchema :one
INSERT INTO
parameter_schema (
parameter_schemas (
id,
created_at,
job_id,
@@ -563,13 +563,13 @@ VALUES
-- name: InsertProvisionerDaemon :one
INSERT INTO
provisioner_daemon (id, created_at, organization_id, name, provisioners)
provisioner_daemons (id, created_at, organization_id, name, provisioners)
VALUES
($1, $2, $3, $4, $5) RETURNING *;
-- name: InsertProvisionerJob :one
INSERT INTO
provisioner_job (
provisioner_jobs (
id,
created_at,
updated_at,
@@ -602,7 +602,7 @@ VALUES
-- name: InsertWorkspace :one
INSERT INTO
workspace (
workspaces (
id,
created_at,
updated_at,
@@ -615,7 +615,7 @@ VALUES
-- name: InsertWorkspaceAgent :one
INSERT INTO
workspace_agent (
workspace_agents (
id,
created_at,
updated_at,
@@ -632,7 +632,7 @@ VALUES
-- name: InsertWorkspaceBuild :one
INSERT INTO
workspace_build (
workspace_builds (
id,
created_at,
updated_at,
@@ -662,7 +662,7 @@ WHERE
-- name: UpdateProjectVersionByID :exec
UPDATE
project_version
project_versions
SET
project_id = $2,
updated_at = $3
@@ -671,7 +671,7 @@ WHERE
-- name: UpdateProvisionerDaemonByID :exec
UPDATE
provisioner_daemon
provisioner_daemons
SET
updated_at = $2,
provisioners = $3
@@ -680,7 +680,7 @@ WHERE
-- name: UpdateProvisionerJobByID :exec
UPDATE
provisioner_job
provisioner_jobs
SET
updated_at = $2
WHERE
@@ -688,7 +688,7 @@ WHERE
-- name: UpdateProvisionerJobWithCompleteByID :exec
UPDATE
provisioner_job
provisioner_jobs
SET
updated_at = $2,
completed_at = $3,
@@ -699,7 +699,7 @@ WHERE
-- name: UpdateWorkspaceAgentByID :exec
UPDATE
workspace_agent
workspace_agents
SET
updated_at = $2
WHERE
@@ -707,7 +707,7 @@ WHERE
-- name: UpdateWorkspaceBuildByID :exec
UPDATE
workspace_build
workspace_builds
SET
updated_at = $2,
after_id = $3,
+50 -50
View File
@@ -16,7 +16,7 @@ import (
const acquireProvisionerJob = `-- name: AcquireProvisionerJob :one
UPDATE
provisioner_job
provisioner_jobs
SET
started_at = $1,
updated_at = $1,
@@ -26,7 +26,7 @@ WHERE
SELECT
id
FROM
provisioner_job AS nested
provisioner_jobs AS nested
WHERE
nested.started_at IS NULL
AND nested.cancelled_at IS NULL
@@ -78,7 +78,7 @@ func (q *sqlQuerier) AcquireProvisionerJob(ctx context.Context, arg AcquireProvi
const deleteParameterValueByID = `-- name: DeleteParameterValueByID :exec
DELETE FROM
parameter_value
parameter_values
WHERE
id = $1
`
@@ -126,7 +126,7 @@ const getFileByHash = `-- name: GetFileByHash :one
SELECT
hash, created_at, created_by, mimetype, data
FROM
file
files
WHERE
hash = $1
LIMIT
@@ -286,7 +286,7 @@ const getParameterSchemasByJobID = `-- name: GetParameterSchemasByJobID :many
SELECT
id, created_at, job_id, name, description, default_source_scheme, default_source_value, allow_override_source, default_destination_scheme, allow_override_destination, default_refresh, redisplay_value, validation_error, validation_condition, validation_type_system, validation_value_type
FROM
parameter_schema
parameter_schemas
WHERE
job_id = $1
`
@@ -335,7 +335,7 @@ const getParameterValueByScopeAndName = `-- name: GetParameterValueByScopeAndNam
SELECT
id, created_at, updated_at, scope, scope_id, name, source_scheme, source_value, destination_scheme
FROM
parameter_value
parameter_values
WHERE
scope = $1
AND scope_id = $2
@@ -371,7 +371,7 @@ const getParameterValuesByScope = `-- name: GetParameterValuesByScope :many
SELECT
id, created_at, updated_at, scope, scope_id, name, source_scheme, source_value, destination_scheme
FROM
parameter_value
parameter_values
WHERE
scope = $1
AND scope_id = $2
@@ -419,7 +419,7 @@ const getProjectByID = `-- name: GetProjectByID :one
SELECT
id, created_at, updated_at, organization_id, name, provisioner, active_version_id
FROM
project
projects
WHERE
id = $1
LIMIT
@@ -445,7 +445,7 @@ const getProjectByOrganizationAndName = `-- name: GetProjectByOrganizationAndNam
SELECT
id, created_at, updated_at, organization_id, name, provisioner, active_version_id
FROM
project
projects
WHERE
organization_id = $1
AND LOWER(name) = LOWER($2)
@@ -477,7 +477,7 @@ const getProjectVersionByID = `-- name: GetProjectVersionByID :one
SELECT
id, project_id, organization_id, created_at, updated_at, name, description, job_id
FROM
project_version
project_versions
WHERE
id = $1
`
@@ -502,7 +502,7 @@ const getProjectVersionByProjectIDAndName = `-- name: GetProjectVersionByProject
SELECT
id, project_id, organization_id, created_at, updated_at, name, description, job_id
FROM
project_version
project_versions
WHERE
project_id = $1
AND name = $2
@@ -533,7 +533,7 @@ const getProjectVersionsByProjectID = `-- name: GetProjectVersionsByProjectID :m
SELECT
id, project_id, organization_id, created_at, updated_at, name, description, job_id
FROM
project_version
project_versions
WHERE
project_id = $1 :: uuid
`
@@ -574,7 +574,7 @@ const getProjectsByOrganization = `-- name: GetProjectsByOrganization :many
SELECT
id, created_at, updated_at, organization_id, name, provisioner, active_version_id
FROM
project
projects
WHERE
organization_id = $1
`
@@ -614,7 +614,7 @@ const getProvisionerDaemonByID = `-- name: GetProvisionerDaemonByID :one
SELECT
id, created_at, updated_at, organization_id, name, provisioners
FROM
provisioner_daemon
provisioner_daemons
WHERE
id = $1
`
@@ -637,7 +637,7 @@ const getProvisionerDaemons = `-- name: GetProvisionerDaemons :many
SELECT
id, created_at, updated_at, organization_id, name, provisioners
FROM
provisioner_daemon
provisioner_daemons
`
func (q *sqlQuerier) GetProvisionerDaemons(ctx context.Context) ([]ProvisionerDaemon, error) {
@@ -674,7 +674,7 @@ const getProvisionerJobByID = `-- name: GetProvisionerJobByID :one
SELECT
id, created_at, updated_at, started_at, cancelled_at, completed_at, error, organization_id, initiator_id, provisioner, storage_method, storage_source, type, input, worker_id
FROM
provisioner_job
provisioner_jobs
WHERE
id = $1
`
@@ -706,7 +706,7 @@ const getProvisionerJobsByIDs = `-- name: GetProvisionerJobsByIDs :many
SELECT
id, created_at, updated_at, started_at, cancelled_at, completed_at, error, organization_id, initiator_id, provisioner, storage_method, storage_source, type, input, worker_id
FROM
provisioner_job
provisioner_jobs
WHERE
id = ANY($1 :: uuid [ ])
`
@@ -754,7 +754,7 @@ const getProvisionerLogsByIDBetween = `-- name: GetProvisionerLogsByIDBetween :m
SELECT
id, job_id, created_at, source, level, output
FROM
provisioner_job_log
provisioner_job_logs
WHERE
job_id = $1
AND (
@@ -901,7 +901,7 @@ const getWorkspaceAgentByAuthToken = `-- name: GetWorkspaceAgentByAuthToken :one
SELECT
id, created_at, updated_at, resource_id, auth_token, auth_instance_id, environment_variables, startup_script, instance_metadata, resource_metadata
FROM
workspace_agent
workspace_agents
WHERE
auth_token = $1
`
@@ -928,7 +928,7 @@ const getWorkspaceAgentByInstanceID = `-- name: GetWorkspaceAgentByInstanceID :o
SELECT
id, created_at, updated_at, resource_id, auth_token, auth_instance_id, environment_variables, startup_script, instance_metadata, resource_metadata
FROM
workspace_agent
workspace_agents
WHERE
auth_instance_id = $1 :: text
ORDER BY
@@ -957,7 +957,7 @@ const getWorkspaceAgentByResourceID = `-- name: GetWorkspaceAgentByResourceID :o
SELECT
id, created_at, updated_at, resource_id, auth_token, auth_instance_id, environment_variables, startup_script, instance_metadata, resource_metadata
FROM
workspace_agent
workspace_agents
WHERE
resource_id = $1
`
@@ -984,7 +984,7 @@ const getWorkspaceBuildByID = `-- name: GetWorkspaceBuildByID :one
SELECT
id, created_at, updated_at, workspace_id, project_version_id, name, before_id, after_id, transition, initiator, provisioner_state, job_id
FROM
workspace_build
workspace_builds
WHERE
id = $1
LIMIT
@@ -1015,7 +1015,7 @@ const getWorkspaceBuildByJobID = `-- name: GetWorkspaceBuildByJobID :one
SELECT
id, created_at, updated_at, workspace_id, project_version_id, name, before_id, after_id, transition, initiator, provisioner_state, job_id
FROM
workspace_build
workspace_builds
WHERE
job_id = $1
LIMIT
@@ -1046,7 +1046,7 @@ const getWorkspaceBuildByWorkspaceID = `-- name: GetWorkspaceBuildByWorkspaceID
SELECT
id, created_at, updated_at, workspace_id, project_version_id, name, before_id, after_id, transition, initiator, provisioner_state, job_id
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1
`
@@ -1091,7 +1091,7 @@ const getWorkspaceBuildByWorkspaceIDAndName = `-- name: GetWorkspaceBuildByWorks
SELECT
id, created_at, updated_at, workspace_id, project_version_id, name, before_id, after_id, transition, initiator, provisioner_state, job_id
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1
AND name = $2
@@ -1126,7 +1126,7 @@ const getWorkspaceBuildByWorkspaceIDWithoutAfter = `-- name: GetWorkspaceBuildBy
SELECT
id, created_at, updated_at, workspace_id, project_version_id, name, before_id, after_id, transition, initiator, provisioner_state, job_id
FROM
workspace_build
workspace_builds
WHERE
workspace_id = $1
AND after_id IS NULL
@@ -1158,7 +1158,7 @@ const getWorkspaceByID = `-- name: GetWorkspaceByID :one
SELECT
id, created_at, updated_at, owner_id, project_id, name
FROM
workspace
workspaces
WHERE
id = $1
LIMIT
@@ -1183,7 +1183,7 @@ const getWorkspaceByUserIDAndName = `-- name: GetWorkspaceByUserIDAndName :one
SELECT
id, created_at, updated_at, owner_id, project_id, name
FROM
workspace
workspaces
WHERE
owner_id = $1
AND LOWER(name) = LOWER($2)
@@ -1213,7 +1213,7 @@ SELECT
project_id,
COUNT(DISTINCT owner_id)
FROM
workspace
workspaces
WHERE
project_id = ANY($1 :: uuid [ ])
GROUP BY
@@ -1253,7 +1253,7 @@ const getWorkspaceResourceByID = `-- name: GetWorkspaceResourceByID :one
SELECT
id, created_at, job_id, transition, type, name, agent_id
FROM
workspace_resource
workspace_resources
WHERE
id = $1
`
@@ -1277,7 +1277,7 @@ const getWorkspaceResourcesByJobID = `-- name: GetWorkspaceResourcesByJobID :man
SELECT
id, created_at, job_id, transition, type, name, agent_id
FROM
workspace_resource
workspace_resources
WHERE
job_id = $1
`
@@ -1317,7 +1317,7 @@ const getWorkspacesByUserID = `-- name: GetWorkspacesByUserID :many
SELECT
id, created_at, updated_at, owner_id, project_id, name
FROM
workspace
workspaces
WHERE
owner_id = $1
`
@@ -1450,7 +1450,7 @@ func (q *sqlQuerier) InsertAPIKey(ctx context.Context, arg InsertAPIKeyParams) (
const insertFile = `-- name: InsertFile :one
INSERT INTO
file (hash, created_at, created_by, mimetype, data)
files (hash, created_at, created_by, mimetype, data)
VALUES
($1, $2, $3, $4, $5) RETURNING hash, created_at, created_by, mimetype, data
`
@@ -1563,7 +1563,7 @@ func (q *sqlQuerier) InsertOrganizationMember(ctx context.Context, arg InsertOrg
const insertParameterSchema = `-- name: InsertParameterSchema :one
INSERT INTO
parameter_schema (
parameter_schemas (
id,
created_at,
job_id,
@@ -1664,7 +1664,7 @@ func (q *sqlQuerier) InsertParameterSchema(ctx context.Context, arg InsertParame
const insertParameterValue = `-- name: InsertParameterValue :one
INSERT INTO
parameter_value (
parameter_values (
id,
name,
created_at,
@@ -1720,7 +1720,7 @@ func (q *sqlQuerier) InsertParameterValue(ctx context.Context, arg InsertParamet
const insertProject = `-- name: InsertProject :one
INSERT INTO
project (
projects (
id,
created_at,
updated_at,
@@ -1768,7 +1768,7 @@ func (q *sqlQuerier) InsertProject(ctx context.Context, arg InsertProjectParams)
const insertProjectVersion = `-- name: InsertProjectVersion :one
INSERT INTO
project_version (
project_versions (
id,
project_id,
organization_id,
@@ -1820,7 +1820,7 @@ func (q *sqlQuerier) InsertProjectVersion(ctx context.Context, arg InsertProject
const insertProvisionerDaemon = `-- name: InsertProvisionerDaemon :one
INSERT INTO
provisioner_daemon (id, created_at, organization_id, name, provisioners)
provisioner_daemons (id, created_at, organization_id, name, provisioners)
VALUES
($1, $2, $3, $4, $5) RETURNING id, created_at, updated_at, organization_id, name, provisioners
`
@@ -1855,7 +1855,7 @@ func (q *sqlQuerier) InsertProvisionerDaemon(ctx context.Context, arg InsertProv
const insertProvisionerJob = `-- name: InsertProvisionerJob :one
INSERT INTO
provisioner_job (
provisioner_jobs (
id,
created_at,
updated_at,
@@ -1920,7 +1920,7 @@ func (q *sqlQuerier) InsertProvisionerJob(ctx context.Context, arg InsertProvisi
const insertProvisionerJobLogs = `-- name: InsertProvisionerJobLogs :many
INSERT INTO
provisioner_job_log
provisioner_job_logs
SELECT
unnest($1 :: uuid [ ]) AS id,
$2 :: uuid AS job_id,
@@ -2042,7 +2042,7 @@ func (q *sqlQuerier) InsertUser(ctx context.Context, arg InsertUserParams) (User
const insertWorkspace = `-- name: InsertWorkspace :one
INSERT INTO
workspace (
workspaces (
id,
created_at,
updated_at,
@@ -2086,7 +2086,7 @@ func (q *sqlQuerier) InsertWorkspace(ctx context.Context, arg InsertWorkspacePar
const insertWorkspaceAgent = `-- name: InsertWorkspaceAgent :one
INSERT INTO
workspace_agent (
workspace_agents (
id,
created_at,
updated_at,
@@ -2146,7 +2146,7 @@ func (q *sqlQuerier) InsertWorkspaceAgent(ctx context.Context, arg InsertWorkspa
const insertWorkspaceBuild = `-- name: InsertWorkspaceBuild :one
INSERT INTO
workspace_build (
workspace_builds (
id,
created_at,
updated_at,
@@ -2211,7 +2211,7 @@ func (q *sqlQuerier) InsertWorkspaceBuild(ctx context.Context, arg InsertWorkspa
const insertWorkspaceResource = `-- name: InsertWorkspaceResource :one
INSERT INTO
workspace_resource (
workspace_resources (
id,
created_at,
job_id,
@@ -2293,7 +2293,7 @@ func (q *sqlQuerier) UpdateAPIKeyByID(ctx context.Context, arg UpdateAPIKeyByIDP
const updateProjectVersionByID = `-- name: UpdateProjectVersionByID :exec
UPDATE
project_version
project_versions
SET
project_id = $2,
updated_at = $3
@@ -2314,7 +2314,7 @@ func (q *sqlQuerier) UpdateProjectVersionByID(ctx context.Context, arg UpdatePro
const updateProvisionerDaemonByID = `-- name: UpdateProvisionerDaemonByID :exec
UPDATE
provisioner_daemon
provisioner_daemons
SET
updated_at = $2,
provisioners = $3
@@ -2335,7 +2335,7 @@ func (q *sqlQuerier) UpdateProvisionerDaemonByID(ctx context.Context, arg Update
const updateProvisionerJobByID = `-- name: UpdateProvisionerJobByID :exec
UPDATE
provisioner_job
provisioner_jobs
SET
updated_at = $2
WHERE
@@ -2354,7 +2354,7 @@ func (q *sqlQuerier) UpdateProvisionerJobByID(ctx context.Context, arg UpdatePro
const updateProvisionerJobWithCompleteByID = `-- name: UpdateProvisionerJobWithCompleteByID :exec
UPDATE
provisioner_job
provisioner_jobs
SET
updated_at = $2,
completed_at = $3,
@@ -2385,7 +2385,7 @@ func (q *sqlQuerier) UpdateProvisionerJobWithCompleteByID(ctx context.Context, a
const updateWorkspaceAgentByID = `-- name: UpdateWorkspaceAgentByID :exec
UPDATE
workspace_agent
workspace_agents
SET
updated_at = $2
WHERE
@@ -2404,7 +2404,7 @@ func (q *sqlQuerier) UpdateWorkspaceAgentByID(ctx context.Context, arg UpdateWor
const updateWorkspaceBuildByID = `-- name: UpdateWorkspaceBuildByID :exec
UPDATE
workspace_build
workspace_builds
SET
updated_at = $2,
after_id = $3,