mirror of
https://github.com/Dvorinka/Containr.git
synced 2026-10-28 07:41:27 +00:00
- git.sql: provider/repo/webhook CRUD, push-dispatch service matcher - ListServicesForPush folds the dynamic branch clause into a static predicate; COALESCE fallbacks match other service loaders - git_receiver dispatch writes reuse deployment queries - TestGitLiveInvariants: live coverage for upsert, search, webhook, and branch matching semantics Authored By: TDvorak <[email protected]>
130 lines
5.2 KiB
SQL
130 lines
5.2 KiB
SQL
-- name: ListGitProviders :many
|
|
SELECT id, name, display_name, api_url, webhook_url, user_id, created_at, updated_at
|
|
FROM git_providers
|
|
WHERE user_id = $1
|
|
ORDER BY created_at DESC;
|
|
|
|
-- name: UpsertGitHubAppProvider :one
|
|
INSERT INTO git_providers (id, name, display_name, api_url, webhook_url, access_token, user_id, created_at, updated_at)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, NOW(), NOW())
|
|
ON CONFLICT (name, user_id)
|
|
DO UPDATE SET
|
|
display_name = EXCLUDED.display_name,
|
|
api_url = EXCLUDED.api_url,
|
|
webhook_url = EXCLUDED.webhook_url,
|
|
access_token = EXCLUDED.access_token,
|
|
updated_at = NOW()
|
|
RETURNING id, created_at, updated_at;
|
|
|
|
-- name: InsertGitProvider :exec
|
|
INSERT INTO git_providers (id, name, display_name, api_url, webhook_url, access_token, user_id, created_at, updated_at)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, NOW(), NOW());
|
|
|
|
-- name: GetGitProviderTimestamps :one
|
|
SELECT created_at, updated_at FROM git_providers WHERE id = $1;
|
|
|
|
-- name: GetGitProviderForRepos :one
|
|
SELECT name, display_name, access_token, api_url
|
|
FROM git_providers
|
|
WHERE id = $1 AND user_id = $2;
|
|
|
|
-- name: GetGitProviderName :one
|
|
SELECT name FROM git_providers WHERE id = $1 AND user_id = $2;
|
|
|
|
-- name: GetGitProviderForFetch :one
|
|
SELECT name, api_url, access_token
|
|
FROM git_providers
|
|
WHERE id = $1 AND user_id = $2;
|
|
|
|
-- name: DeleteGitProvider :execrows
|
|
DELETE FROM git_providers WHERE id = $1 AND user_id = $2;
|
|
|
|
-- name: ListGitRepositories :many
|
|
SELECT id, provider_id, name, full_name, COALESCE(description, '') AS description,
|
|
clone_url, COALESCE(webhook_url, '') AS webhook_url,
|
|
default_branch, is_private, user_id, created_at, updated_at
|
|
FROM git_repositories
|
|
WHERE provider_id = $1 AND user_id = $2
|
|
AND ($3::text IS NULL OR full_name ILIKE ('%' || $3::text || '%') OR name ILIKE ('%' || $3::text || '%'))
|
|
ORDER BY updated_at DESC
|
|
LIMIT $4 OFFSET $5;
|
|
|
|
-- name: CountGitRepositories :one
|
|
SELECT COUNT(*)
|
|
FROM git_repositories
|
|
WHERE provider_id = $1 AND user_id = $2
|
|
AND ($3::text IS NULL OR full_name ILIKE ('%' || $3::text || '%') OR name ILIKE ('%' || $3::text || '%'));
|
|
|
|
-- name: GetGitRepositoryByFullName :one
|
|
SELECT id, provider_id, name, full_name, COALESCE(description, '') AS description,
|
|
clone_url, COALESCE(webhook_url, '') AS webhook_url,
|
|
default_branch, is_private, user_id, created_at, updated_at
|
|
FROM git_repositories
|
|
WHERE provider_id = $1 AND full_name = $2 AND user_id = $3;
|
|
|
|
-- name: InsertGitRepository :one
|
|
INSERT INTO git_repositories (id, provider_id, name, full_name, description, clone_url, default_branch, is_private, user_id, created_at, updated_at)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW(), NOW())
|
|
RETURNING created_at, updated_at;
|
|
|
|
-- name: UpsertGitRepository :exec
|
|
INSERT INTO git_repositories (id, provider_id, name, full_name, description, clone_url, default_branch, is_private, user_id, created_at, updated_at)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, NOW(), NOW())
|
|
ON CONFLICT (provider_id, full_name)
|
|
DO UPDATE SET
|
|
name = EXCLUDED.name,
|
|
description = EXCLUDED.description,
|
|
clone_url = EXCLUDED.clone_url,
|
|
default_branch = EXCLUDED.default_branch,
|
|
is_private = EXCLUDED.is_private,
|
|
updated_at = NOW();
|
|
|
|
-- name: GetGitRepositoryProviderID :one
|
|
SELECT provider_id FROM git_repositories WHERE id = $1 AND user_id = $2;
|
|
|
|
-- name: UpsertGitWebhook :one
|
|
INSERT INTO git_webhooks (id, repo_id, provider_id, events, webhook_secret, active, branch_filter, created_at, updated_at)
|
|
VALUES ($1, $2, $3, $4, $5, TRUE, $6, NOW(), NOW())
|
|
ON CONFLICT (repo_id, provider_id)
|
|
DO UPDATE SET
|
|
events = EXCLUDED.events,
|
|
webhook_secret = EXCLUDED.webhook_secret,
|
|
active = TRUE,
|
|
branch_filter = EXCLUDED.branch_filter,
|
|
updated_at = NOW()
|
|
RETURNING id, active, created_at, updated_at;
|
|
|
|
-- name: ListConnectedRepositories :many
|
|
SELECT r.id, r.provider_id, r.name, r.full_name, COALESCE(r.description, '') AS description, r.clone_url,
|
|
r.default_branch, r.is_private, r.user_id, r.created_at, r.updated_at,
|
|
p.name AS provider_name, p.display_name
|
|
FROM git_repositories r
|
|
JOIN git_providers p ON r.provider_id = p.id
|
|
WHERE r.user_id = $1
|
|
ORDER BY r.updated_at DESC
|
|
LIMIT $2 OFFSET $3;
|
|
|
|
-- name: CountUserRepositories :one
|
|
SELECT COUNT(*) FROM git_repositories WHERE user_id = $1;
|
|
|
|
-- name: GetGitWebhookForPush :one
|
|
SELECT webhook_secret, repo_id, provider_id, COALESCE(branch_filter, '') AS branch_filter, active
|
|
FROM git_webhooks WHERE id = $1;
|
|
|
|
-- name: GetGitProviderNameByID :one
|
|
SELECT name FROM git_providers WHERE id = $1;
|
|
|
|
-- name: GetGitRepoForPush :one
|
|
SELECT clone_url, full_name, user_id FROM git_repositories WHERE id = $1;
|
|
|
|
-- name: ListServicesForPush :many
|
|
SELECT s.id, s.project_id, s.name,
|
|
COALESCE(s.type, s.service_type, '') AS type, COALESCE(s.status, '') AS status,
|
|
COALESCE(s.image, s.image_name, '') AS image, COALESCE(s.command, s.start_command, '') AS command,
|
|
COALESCE(s.environment, '') AS environment, COALESCE(s.git_repo, s.source_url, '') AS git_repo,
|
|
COALESCE(s.git_branch, '') AS git_branch, COALESCE(s.build_path, '') AS build_path,
|
|
COALESCE(s.cpu, '') AS cpu, COALESCE(s.memory, '') AS memory,
|
|
s.created_at, s.updated_at
|
|
FROM services s
|
|
WHERE (s.git_branch = $1 OR $1 = '') AND (s.git_repo = $2 OR s.git_repo = $3);
|