feat(desktop): add client release updater
Desktop Client Build / Resolve Build Metadata (push) Successful in 19s
Frontend CI / Frontend (push) Successful in 3m20s
Backend CI / Backend (push) Successful in 16m48s
Desktop Client Build / Build Desktop Client (push) Successful in 24m46s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 37s
Desktop Client Build / Resolve Build Metadata (push) Successful in 19s
Frontend CI / Frontend (push) Successful in 3m20s
Backend CI / Backend (push) Successful in 16m48s
Desktop Client Build / Build Desktop Client (push) Successful in 24m46s
Desktop Client Build / Publish Client Artifacts to NAS (push) Successful in 37s
This commit is contained in:
@@ -0,0 +1 @@
|
||||
DROP TABLE IF EXISTS ops.desktop_client_releases;
|
||||
@@ -0,0 +1,64 @@
|
||||
CREATE TABLE IF NOT EXISTS ops.desktop_client_releases (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
platform VARCHAR(32) NOT NULL,
|
||||
arch VARCHAR(32) NOT NULL DEFAULT 'universal',
|
||||
channel VARCHAR(32) NOT NULL DEFAULT 'stable',
|
||||
version VARCHAR(64) NOT NULL,
|
||||
min_supported_version VARCHAR(64),
|
||||
download_source VARCHAR(16) NOT NULL DEFAULT 'oss',
|
||||
oss_object_key TEXT,
|
||||
custom_download_url TEXT,
|
||||
file_name TEXT,
|
||||
file_size_bytes BIGINT,
|
||||
sha256 VARCHAR(64),
|
||||
updater_download_source VARCHAR(16),
|
||||
updater_oss_object_key TEXT,
|
||||
updater_custom_download_url TEXT,
|
||||
updater_file_name TEXT,
|
||||
updater_file_size_bytes BIGINT,
|
||||
updater_sha256 VARCHAR(64),
|
||||
release_notes TEXT,
|
||||
force_update BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
enabled BOOLEAN NOT NULL DEFAULT TRUE,
|
||||
published_at TIMESTAMPTZ,
|
||||
created_by BIGINT,
|
||||
updated_by BIGINT,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
CONSTRAINT ck_desktop_client_release_file_size
|
||||
CHECK (file_size_bytes IS NULL OR file_size_bytes >= 0),
|
||||
CONSTRAINT ck_desktop_client_release_sha256
|
||||
CHECK (sha256 IS NULL OR sha256 ~ '^[0-9a-f]{64}$'),
|
||||
CONSTRAINT ck_desktop_client_release_updater_file_size
|
||||
CHECK (updater_file_size_bytes IS NULL OR updater_file_size_bytes >= 0),
|
||||
CONSTRAINT ck_desktop_client_release_updater_sha256
|
||||
CHECK (updater_sha256 IS NULL OR updater_sha256 ~ '^[0-9a-f]{64}$'),
|
||||
CONSTRAINT ck_desktop_client_release_source
|
||||
CHECK (download_source IN ('oss', 'custom')),
|
||||
CONSTRAINT ck_desktop_client_release_updater_source
|
||||
CHECK (updater_download_source IS NULL OR updater_download_source IN ('oss', 'custom')),
|
||||
CONSTRAINT ck_desktop_client_release_download_target
|
||||
CHECK (
|
||||
(download_source = 'oss' AND NULLIF(BTRIM(COALESCE(oss_object_key, '')), '') IS NOT NULL)
|
||||
OR
|
||||
(download_source = 'custom' AND NULLIF(BTRIM(COALESCE(custom_download_url, '')), '') IS NOT NULL)
|
||||
),
|
||||
CONSTRAINT ck_desktop_client_release_updater_target
|
||||
CHECK (
|
||||
updater_download_source IS NULL
|
||||
OR
|
||||
(updater_download_source = 'oss' AND NULLIF(BTRIM(COALESCE(updater_oss_object_key, '')), '') IS NOT NULL)
|
||||
OR
|
||||
(updater_download_source = 'custom' AND NULLIF(BTRIM(COALESCE(updater_custom_download_url, '')), '') IS NOT NULL)
|
||||
)
|
||||
);
|
||||
|
||||
CREATE UNIQUE INDEX IF NOT EXISTS uk_desktop_client_releases_target
|
||||
ON ops.desktop_client_releases(platform, arch, channel);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_desktop_client_releases_lookup
|
||||
ON ops.desktop_client_releases(channel, platform, arch)
|
||||
WHERE enabled = TRUE;
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_desktop_client_releases_updated_at
|
||||
ON ops.desktop_client_releases(updated_at DESC);
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
DROP CONSTRAINT IF EXISTS ck_desktop_client_release_updater_target,
|
||||
DROP CONSTRAINT IF EXISTS ck_desktop_client_release_updater_source,
|
||||
DROP CONSTRAINT IF EXISTS ck_desktop_client_release_updater_sha256,
|
||||
DROP CONSTRAINT IF EXISTS ck_desktop_client_release_updater_file_size,
|
||||
DROP COLUMN IF EXISTS updater_sha256,
|
||||
DROP COLUMN IF EXISTS updater_file_size_bytes,
|
||||
DROP COLUMN IF EXISTS updater_file_name,
|
||||
DROP COLUMN IF EXISTS updater_custom_download_url,
|
||||
DROP COLUMN IF EXISTS updater_oss_object_key,
|
||||
DROP COLUMN IF EXISTS updater_download_source;
|
||||
@@ -0,0 +1,60 @@
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
ADD COLUMN IF NOT EXISTS updater_download_source VARCHAR(16),
|
||||
ADD COLUMN IF NOT EXISTS updater_oss_object_key TEXT,
|
||||
ADD COLUMN IF NOT EXISTS updater_custom_download_url TEXT,
|
||||
ADD COLUMN IF NOT EXISTS updater_file_name TEXT,
|
||||
ADD COLUMN IF NOT EXISTS updater_file_size_bytes BIGINT,
|
||||
ADD COLUMN IF NOT EXISTS updater_sha256 VARCHAR(64);
|
||||
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint
|
||||
WHERE conname = 'ck_desktop_client_release_updater_file_size'
|
||||
AND conrelid = 'ops.desktop_client_releases'::regclass
|
||||
) THEN
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
ADD CONSTRAINT ck_desktop_client_release_updater_file_size
|
||||
CHECK (updater_file_size_bytes IS NULL OR updater_file_size_bytes >= 0);
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint
|
||||
WHERE conname = 'ck_desktop_client_release_updater_sha256'
|
||||
AND conrelid = 'ops.desktop_client_releases'::regclass
|
||||
) THEN
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
ADD CONSTRAINT ck_desktop_client_release_updater_sha256
|
||||
CHECK (updater_sha256 IS NULL OR updater_sha256 ~ '^[0-9a-f]{64}$');
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint
|
||||
WHERE conname = 'ck_desktop_client_release_updater_source'
|
||||
AND conrelid = 'ops.desktop_client_releases'::regclass
|
||||
) THEN
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
ADD CONSTRAINT ck_desktop_client_release_updater_source
|
||||
CHECK (updater_download_source IS NULL OR updater_download_source IN ('oss', 'custom'));
|
||||
END IF;
|
||||
|
||||
IF NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM pg_constraint
|
||||
WHERE conname = 'ck_desktop_client_release_updater_target'
|
||||
AND conrelid = 'ops.desktop_client_releases'::regclass
|
||||
) THEN
|
||||
ALTER TABLE ops.desktop_client_releases
|
||||
ADD CONSTRAINT ck_desktop_client_release_updater_target
|
||||
CHECK (
|
||||
updater_download_source IS NULL
|
||||
OR
|
||||
(updater_download_source = 'oss' AND NULLIF(BTRIM(COALESCE(updater_oss_object_key, '')), '') IS NOT NULL)
|
||||
OR
|
||||
(updater_download_source = 'custom' AND NULLIF(BTRIM(COALESCE(updater_custom_download_url, '')), '') IS NOT NULL)
|
||||
);
|
||||
END IF;
|
||||
END $$;
|
||||
Reference in New Issue
Block a user