mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-06-03 20:12:58 +00:00
small fix, don't worry about it
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
-- name: ListDatabaseServicesByUser :many
|
||||
SELECT id, name, type, status, version, plan, region, connection_url, created_at, updated_at
|
||||
FROM database_services
|
||||
WHERE user_id = $1
|
||||
ORDER BY created_at DESC;
|
||||
|
||||
-- name: GetDatabaseServiceByIDAndUser :one
|
||||
SELECT id, name, type, status, version, plan, region, connection_url, created_at, updated_at
|
||||
FROM database_services
|
||||
WHERE id = $1 AND user_id = $2;
|
||||
|
||||
-- name: DatabaseServiceExistsByIDAndUser :one
|
||||
SELECT EXISTS(
|
||||
SELECT 1 FROM database_services WHERE id = $1 AND user_id = $2
|
||||
);
|
||||
|
||||
-- name: CountDatabaseServicesByUserAndName :one
|
||||
SELECT COUNT(*)
|
||||
FROM database_services
|
||||
WHERE user_id = sqlc.arg(user_id) AND LOWER(name) = LOWER(sqlc.arg(name));
|
||||
|
||||
-- name: CreateDatabaseService :exec
|
||||
INSERT INTO database_services (id, user_id, name, type, status, version, plan, region, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10);
|
||||
|
||||
-- name: UpdateDatabaseServiceNameAndPlanByIDAndUser :exec
|
||||
UPDATE database_services
|
||||
SET name = $1, plan = $2, updated_at = $3
|
||||
WHERE id = $4 AND user_id = $5;
|
||||
|
||||
-- name: UpdateDatabaseServiceNameByIDAndUser :exec
|
||||
UPDATE database_services
|
||||
SET name = $1, updated_at = $2
|
||||
WHERE id = $3 AND user_id = $4;
|
||||
|
||||
-- name: UpdateDatabaseServicePlanByIDAndUser :exec
|
||||
UPDATE database_services
|
||||
SET plan = $1, updated_at = $2
|
||||
WHERE id = $3 AND user_id = $4;
|
||||
|
||||
-- name: DeleteDatabaseServiceByIDAndUser :exec
|
||||
DELETE FROM database_services
|
||||
WHERE id = $1 AND user_id = $2;
|
||||
|
||||
-- name: SetDatabaseServiceStatusByIDAndUser :exec
|
||||
UPDATE database_services
|
||||
SET status = $1, updated_at = $2
|
||||
WHERE id = $3 AND user_id = $4;
|
||||
|
||||
-- name: SetDatabaseServiceStatusByID :exec
|
||||
UPDATE database_services
|
||||
SET status = $1, updated_at = $2
|
||||
WHERE id = $3;
|
||||
|
||||
-- name: SetDatabaseServiceStatusAndConnectionByID :exec
|
||||
UPDATE database_services
|
||||
SET status = $1, connection_url = $2, updated_at = $3
|
||||
WHERE id = $4;
|
||||
|
||||
-- name: ListDatabaseBackupsByDatabaseAndUser :many
|
||||
SELECT b.id, b.database_id, b.size, b.status, b.backup_path, b.created_at, b.completed_at
|
||||
FROM database_backups b
|
||||
JOIN database_services s ON s.id = b.database_id
|
||||
WHERE b.database_id = $1 AND s.user_id = $2
|
||||
ORDER BY b.created_at DESC
|
||||
LIMIT $3;
|
||||
|
||||
-- name: GetDatabaseBackupByIDAndDatabaseAndUser :one
|
||||
SELECT b.id, b.database_id, b.size, b.status, b.backup_path, b.created_at, b.completed_at
|
||||
FROM database_backups b
|
||||
JOIN database_services s ON s.id = b.database_id
|
||||
WHERE b.id = $1 AND b.database_id = $2 AND s.user_id = $3;
|
||||
|
||||
-- name: CreateDatabaseBackup :exec
|
||||
INSERT INTO database_backups (id, database_id, size, status, backup_path, created_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6);
|
||||
|
||||
-- name: SetDatabaseBackupStatusByID :exec
|
||||
UPDATE database_backups
|
||||
SET status = $1, size = $2, completed_at = $3
|
||||
WHERE id = $4;
|
||||
@@ -0,0 +1,99 @@
|
||||
-- name: ListProjectsWithStatsByUser :many
|
||||
SELECT
|
||||
p.id,
|
||||
p.name,
|
||||
p.description,
|
||||
p.owner_id,
|
||||
p.created_at,
|
||||
p.updated_at,
|
||||
COUNT(DISTINCT s.id)::bigint AS service_count,
|
||||
COUNT(DISTINCT d.id)::bigint AS deployment_count,
|
||||
COUNT(DISTINCT CASE WHEN s.status = 'running' THEN s.id END)::bigint AS running_services,
|
||||
(
|
||||
SELECT d2.created_at
|
||||
FROM deployments d2
|
||||
JOIN services s2 ON s2.id = d2.service_id
|
||||
WHERE s2.project_id = p.id
|
||||
ORDER BY d2.created_at DESC
|
||||
LIMIT 1
|
||||
) AS last_deployment
|
||||
FROM projects p
|
||||
LEFT JOIN services s ON s.project_id = p.id
|
||||
LEFT JOIN deployments d ON d.service_id = s.id
|
||||
WHERE
|
||||
(p.owner_id = sqlc.arg(user_id) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM project_members pm
|
||||
WHERE pm.project_id = p.id AND pm.user_id = sqlc.arg(user_id)
|
||||
))
|
||||
AND (
|
||||
sqlc.narg(search)::text IS NULL
|
||||
OR p.name ILIKE ('%' || sqlc.narg(search)::text || '%')
|
||||
OR COALESCE(p.description, '') ILIKE ('%' || sqlc.narg(search)::text || '%')
|
||||
)
|
||||
GROUP BY p.id, p.name, p.description, p.owner_id, p.created_at, p.updated_at
|
||||
ORDER BY p.updated_at DESC
|
||||
LIMIT sqlc.arg(limit_count) OFFSET sqlc.arg(offset_count);
|
||||
|
||||
-- name: CountProjectsByUser :one
|
||||
SELECT COUNT(*)::bigint AS total
|
||||
FROM projects p
|
||||
WHERE
|
||||
(p.owner_id = sqlc.arg(user_id) OR EXISTS (
|
||||
SELECT 1
|
||||
FROM project_members pm
|
||||
WHERE pm.project_id = p.id AND pm.user_id = sqlc.arg(user_id)
|
||||
))
|
||||
AND (
|
||||
sqlc.narg(search)::text IS NULL
|
||||
OR p.name ILIKE ('%' || sqlc.narg(search)::text || '%')
|
||||
OR COALESCE(p.description, '') ILIKE ('%' || sqlc.narg(search)::text || '%')
|
||||
);
|
||||
|
||||
-- name: GetProjectByIDForUser :one
|
||||
SELECT p.id, p.name, p.description, p.owner_id, p.created_at, p.updated_at
|
||||
FROM projects p
|
||||
WHERE p.id = sqlc.arg(project_id)
|
||||
AND (
|
||||
p.owner_id = sqlc.arg(user_id)
|
||||
OR EXISTS (
|
||||
SELECT 1
|
||||
FROM project_members pm
|
||||
WHERE pm.project_id = p.id AND pm.user_id = sqlc.arg(user_id)
|
||||
)
|
||||
);
|
||||
|
||||
-- name: CreateProject :one
|
||||
INSERT INTO projects (name, description, owner_id)
|
||||
VALUES (sqlc.arg(name), sqlc.narg(description), sqlc.arg(owner_id))
|
||||
RETURNING id, name, description, owner_id, created_at, updated_at;
|
||||
|
||||
-- name: InsertProjectEnvironment :exec
|
||||
INSERT INTO environments (name, project_id)
|
||||
VALUES (sqlc.arg(name), sqlc.arg(project_id));
|
||||
|
||||
-- name: GetProjectRoleForUser :one
|
||||
SELECT (CASE
|
||||
WHEN p.owner_id = sqlc.arg(user_id) THEN 'owner'
|
||||
ELSE COALESCE(pm.role, '')
|
||||
END)::text AS role
|
||||
FROM projects p
|
||||
LEFT JOIN project_members pm ON p.id = pm.project_id AND pm.user_id = sqlc.arg(user_id)
|
||||
WHERE p.id = sqlc.arg(project_id);
|
||||
|
||||
-- name: UpdateProjectByID :execrows
|
||||
UPDATE projects
|
||||
SET
|
||||
name = COALESCE(sqlc.narg(name), name),
|
||||
description = COALESCE(sqlc.narg(description), description),
|
||||
updated_at = NOW()
|
||||
WHERE id = sqlc.arg(project_id);
|
||||
|
||||
-- name: GetProjectOwnerByID :one
|
||||
SELECT owner_id
|
||||
FROM projects
|
||||
WHERE id = sqlc.arg(project_id);
|
||||
|
||||
-- name: DeleteProjectByID :execrows
|
||||
DELETE FROM projects
|
||||
WHERE id = sqlc.arg(project_id);
|
||||
@@ -0,0 +1,37 @@
|
||||
-- name: ListServiceTemplates :many
|
||||
SELECT id, name, description, category, logo, config, variables, is_official, created_at, updated_at
|
||||
FROM service_templates
|
||||
ORDER BY is_official DESC, name ASC;
|
||||
|
||||
-- name: ListServiceTemplatesByCategory :many
|
||||
SELECT id, name, description, category, logo, config, variables, is_official, created_at, updated_at
|
||||
FROM service_templates
|
||||
WHERE category = $1
|
||||
ORDER BY is_official DESC, name ASC;
|
||||
|
||||
-- name: GetServiceTemplateByID :one
|
||||
SELECT id, name, description, category, logo, config, variables, is_official, created_at, updated_at
|
||||
FROM service_templates
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: GetProjectOwnerID :one
|
||||
SELECT owner_id
|
||||
FROM projects
|
||||
WHERE id = $1;
|
||||
|
||||
-- name: CountServicesByProjectAndName :one
|
||||
SELECT COUNT(*)
|
||||
FROM services
|
||||
WHERE project_id = $1 AND name = $2;
|
||||
|
||||
-- name: CreateServiceFromTemplate :exec
|
||||
INSERT INTO services (id, project_id, name, type, status, image, command, environment, cpu, memory, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12);
|
||||
|
||||
-- name: UpsertEnvironmentVariable :exec
|
||||
INSERT INTO environment_variables (id, service_id, key, value, is_secret, created_at, updated_at)
|
||||
VALUES ($1, $2, $3, $4, $5, $6, $7)
|
||||
ON CONFLICT (service_id, key) DO UPDATE
|
||||
SET value = EXCLUDED.value,
|
||||
is_secret = EXCLUDED.is_secret,
|
||||
updated_at = EXCLUDED.updated_at;
|
||||
@@ -0,0 +1,97 @@
|
||||
CREATE TABLE projects (
|
||||
id UUID PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
owner_id UUID NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE project_members (
|
||||
id UUID PRIMARY KEY,
|
||||
project_id UUID NOT NULL,
|
||||
user_id UUID NOT NULL,
|
||||
role VARCHAR(50) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE environments (
|
||||
id UUID PRIMARY KEY,
|
||||
name VARCHAR(50) NOT NULL,
|
||||
project_id UUID NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
UNIQUE(name, project_id)
|
||||
);
|
||||
|
||||
CREATE TABLE services (
|
||||
id UUID PRIMARY KEY,
|
||||
project_id UUID NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL,
|
||||
image TEXT,
|
||||
command TEXT,
|
||||
environment VARCHAR(50) DEFAULT 'production',
|
||||
cpu VARCHAR(20) DEFAULT '0.5',
|
||||
memory VARCHAR(20) DEFAULT '512Mi',
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
UNIQUE(project_id, name)
|
||||
);
|
||||
|
||||
CREATE TABLE deployments (
|
||||
id UUID PRIMARY KEY,
|
||||
service_id UUID NOT NULL REFERENCES services(id) ON DELETE CASCADE,
|
||||
status VARCHAR(50),
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE environment_variables (
|
||||
id UUID PRIMARY KEY,
|
||||
service_id UUID NOT NULL REFERENCES services(id) ON DELETE CASCADE,
|
||||
key VARCHAR(255) NOT NULL,
|
||||
value TEXT NOT NULL,
|
||||
is_secret BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
UNIQUE(service_id, key)
|
||||
);
|
||||
|
||||
CREATE TABLE service_templates (
|
||||
id VARCHAR(50) PRIMARY KEY,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
description TEXT,
|
||||
category VARCHAR(50) NOT NULL,
|
||||
logo VARCHAR(500),
|
||||
config JSONB NOT NULL,
|
||||
variables JSONB DEFAULT '[]',
|
||||
is_official BOOLEAN DEFAULT false,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE database_services (
|
||||
id VARCHAR(255) PRIMARY KEY,
|
||||
user_id VARCHAR(255) NOT NULL,
|
||||
name VARCHAR(255) NOT NULL,
|
||||
type VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL DEFAULT 'building',
|
||||
version VARCHAR(50) NOT NULL,
|
||||
plan VARCHAR(50) NOT NULL,
|
||||
region VARCHAR(50) NOT NULL,
|
||||
connection_url TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
CREATE TABLE database_backups (
|
||||
id VARCHAR(255) PRIMARY KEY,
|
||||
database_id VARCHAR(255) NOT NULL REFERENCES database_services(id) ON DELETE CASCADE,
|
||||
size VARCHAR(50) NOT NULL,
|
||||
status VARCHAR(50) NOT NULL DEFAULT 'in_progress',
|
||||
backup_path TEXT,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
completed_at TIMESTAMP WITH TIME ZONE
|
||||
);
|
||||
Reference in New Issue
Block a user