mirror of
https://github.com/coder/coder.git
synced 2026-06-03 21:18:24 +00:00
5b01f615eb
* Add SQL migration * Add query functions for workspaces * Add create routes * Add tests for codersdk * Add workspace parameter route * Add workspace query * Move workspace function * Add querying for workspace history * Fix query * Fix syntax error * Move workspace routes * Fix version * Add CLI tests * Fix syntax error * Remove error * Fix history error * Add new user test * Fix test * Lower target to 70% * Improve comments * Add comment
400 lines
5.6 KiB
SQL
400 lines
5.6 KiB
SQL
-- Database queries are generated using sqlc. See:
|
|
-- https://docs.sqlc.dev/en/latest/tutorials/getting-started-postgresql.html
|
|
--
|
|
-- Run "make gen" to generate models and query functions.
|
|
;
|
|
|
|
-- name: GetAPIKeyByID :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
api_keys
|
|
WHERE
|
|
id = $1
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetUserByID :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
users
|
|
WHERE
|
|
id = $1
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetUserByEmailOrUsername :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
users
|
|
WHERE
|
|
LOWER(username) = LOWER(@username)
|
|
OR email = @email
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetUserCount :one
|
|
SELECT
|
|
COUNT(*)
|
|
FROM
|
|
users;
|
|
|
|
-- name: GetOrganizationByName :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
organizations
|
|
WHERE
|
|
LOWER(name) = LOWER(@name)
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetOrganizationsByUserID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
organizations
|
|
WHERE
|
|
id = (
|
|
SELECT
|
|
organization_id
|
|
FROM
|
|
organization_members
|
|
WHERE
|
|
user_id = $1
|
|
);
|
|
|
|
-- name: GetOrganizationMemberByUserID :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
organization_members
|
|
WHERE
|
|
organization_id = $1
|
|
AND user_id = $2
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetProjectByID :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
project
|
|
WHERE
|
|
id = $1
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetProjectByOrganizationAndName :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
project
|
|
WHERE
|
|
organization_id = @organization_id
|
|
AND LOWER(name) = LOWER(@name)
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetProjectsByOrganizationIDs :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
project
|
|
WHERE
|
|
organization_id = ANY(@ids :: text [ ]);
|
|
|
|
-- name: GetProjectHistoryByProjectID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
project_history
|
|
WHERE
|
|
project_id = $1;
|
|
|
|
-- name: GetProjectHistoryByID :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
project_history
|
|
WHERE
|
|
id = $1;
|
|
|
|
-- name: GetWorkspacesByUserID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace
|
|
WHERE
|
|
owner_id = $1;
|
|
|
|
-- name: GetWorkspaceByUserIDAndName :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace
|
|
WHERE
|
|
owner_id = @owner_id
|
|
AND LOWER(name) = LOWER(@name);
|
|
|
|
-- name: GetWorkspacesByProjectAndUserID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace
|
|
WHERE
|
|
owner_id = $1
|
|
AND project_id = $2;
|
|
|
|
-- name: GetWorkspaceHistoryByWorkspaceID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace_history
|
|
WHERE
|
|
workspace_id = $1;
|
|
|
|
-- name: GetWorkspaceHistoryByWorkspaceIDWithoutAfter :one
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace_history
|
|
WHERE
|
|
workspace_id = $1
|
|
AND after_id IS NULL
|
|
LIMIT
|
|
1;
|
|
|
|
-- name: GetWorkspaceResourcesByHistoryID :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace_resource
|
|
WHERE
|
|
workspace_history_id = $1;
|
|
|
|
-- name: GetWorkspaceAgentsByResourceIDs :many
|
|
SELECT
|
|
*
|
|
FROM
|
|
workspace_agent
|
|
WHERE
|
|
workspace_resource_id = ANY(@ids :: uuid [ ]);
|
|
|
|
-- name: InsertAPIKey :one
|
|
INSERT INTO
|
|
api_keys (
|
|
id,
|
|
hashed_secret,
|
|
user_id,
|
|
application,
|
|
name,
|
|
last_used,
|
|
expires_at,
|
|
created_at,
|
|
updated_at,
|
|
login_type,
|
|
oidc_access_token,
|
|
oidc_refresh_token,
|
|
oidc_id_token,
|
|
oidc_expiry,
|
|
devurl_token
|
|
)
|
|
VALUES
|
|
(
|
|
$1,
|
|
$2,
|
|
$3,
|
|
$4,
|
|
$5,
|
|
$6,
|
|
$7,
|
|
$8,
|
|
$9,
|
|
$10,
|
|
$11,
|
|
$12,
|
|
$13,
|
|
$14,
|
|
$15
|
|
) RETURNING *;
|
|
|
|
-- name: InsertOrganization :one
|
|
INSERT INTO
|
|
organizations (id, name, description, created_at, updated_at)
|
|
VALUES
|
|
($1, $2, $3, $4, $5) RETURNING *;
|
|
|
|
-- name: InsertOrganizationMember :one
|
|
INSERT INTO
|
|
organization_members (
|
|
organization_id,
|
|
user_id,
|
|
created_at,
|
|
updated_at,
|
|
roles
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5) RETURNING *;
|
|
|
|
-- name: InsertProject :one
|
|
INSERT INTO
|
|
project (
|
|
id,
|
|
created_at,
|
|
updated_at,
|
|
organization_id,
|
|
name,
|
|
provisioner
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6) RETURNING *;
|
|
|
|
-- name: InsertProjectHistory :one
|
|
INSERT INTO
|
|
project_history (
|
|
id,
|
|
project_id,
|
|
created_at,
|
|
updated_at,
|
|
name,
|
|
description,
|
|
storage_method,
|
|
storage_source,
|
|
import_job_id
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *;
|
|
|
|
-- name: InsertProjectParameter :one
|
|
INSERT INTO
|
|
project_parameter (
|
|
id,
|
|
created_at,
|
|
project_history_id,
|
|
name,
|
|
description,
|
|
default_source,
|
|
allow_override_source,
|
|
default_destination,
|
|
allow_override_destination,
|
|
default_refresh,
|
|
redisplay_value,
|
|
validation_error,
|
|
validation_condition,
|
|
validation_type_system,
|
|
validation_value_type
|
|
)
|
|
VALUES
|
|
(
|
|
$1,
|
|
$2,
|
|
$3,
|
|
$4,
|
|
$5,
|
|
$6,
|
|
$7,
|
|
$8,
|
|
$9,
|
|
$10,
|
|
$11,
|
|
$12,
|
|
$13,
|
|
$14,
|
|
$15
|
|
) RETURNING *;
|
|
|
|
-- name: InsertUser :one
|
|
INSERT INTO
|
|
users (
|
|
id,
|
|
email,
|
|
name,
|
|
login_type,
|
|
revoked,
|
|
hashed_password,
|
|
created_at,
|
|
updated_at,
|
|
username
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, false, $5, $6, $7, $8) RETURNING *;
|
|
|
|
-- name: InsertWorkspace :one
|
|
INSERT INTO
|
|
workspace (
|
|
id,
|
|
created_at,
|
|
updated_at,
|
|
owner_id,
|
|
project_id,
|
|
name
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6) RETURNING *;
|
|
|
|
-- name: InsertWorkspaceAgent :one
|
|
INSERT INTO
|
|
workspace_agent (
|
|
id,
|
|
workspace_resource_id,
|
|
created_at,
|
|
updated_at,
|
|
instance_metadata,
|
|
resource_metadata
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6) RETURNING *;
|
|
|
|
-- name: InsertWorkspaceHistory :one
|
|
INSERT INTO
|
|
workspace_history (
|
|
id,
|
|
created_at,
|
|
updated_at,
|
|
workspace_id,
|
|
project_history_id,
|
|
before_id,
|
|
transition,
|
|
initiator,
|
|
provision_job_id
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6, $7, $8, $9) RETURNING *;
|
|
|
|
-- name: InsertWorkspaceResource :one
|
|
INSERT INTO
|
|
workspace_resource (
|
|
id,
|
|
created_at,
|
|
workspace_history_id,
|
|
type,
|
|
name,
|
|
workspace_agent_token
|
|
)
|
|
VALUES
|
|
($1, $2, $3, $4, $5, $6) RETURNING *;
|
|
|
|
-- name: UpdateAPIKeyByID :exec
|
|
UPDATE
|
|
api_keys
|
|
SET
|
|
last_used = $2,
|
|
expires_at = $3,
|
|
oidc_access_token = $4,
|
|
oidc_refresh_token = $5,
|
|
oidc_expiry = $6
|
|
WHERE
|
|
id = $1;
|
|
|
|
-- name: UpdateWorkspaceHistoryByID :exec
|
|
UPDATE
|
|
workspace_history
|
|
SET
|
|
updated_at = $2,
|
|
after_id = $3
|
|
WHERE
|
|
id = $1;
|