feat: add vms and ssh keys schema

This commit is contained in:
Philipp
2026-06-10 15:45:21 +02:00
parent ed7acaa33d
commit 0e9295c1c8
4 changed files with 62 additions and 0 deletions
@@ -0,0 +1,8 @@
DROP INDEX IF EXISTS public.ssh_keys_tenant_id_idx;
DROP TABLE IF EXISTS public.ssh_keys;
DROP INDEX IF EXISTS public.vms_status_idx;
DROP INDEX IF EXISTS public.vms_cluster_id_idx;
DROP INDEX IF EXISTS public.vms_project_id_idx;
DROP INDEX IF EXISTS public.vms_cluster_id_proxmox_vmid_key;
DROP TABLE IF EXISTS public.vms;
DROP TYPE IF EXISTS public.vm_status;
+47
View File
@@ -0,0 +1,47 @@
CREATE TYPE public.vm_status AS ENUM (
'provisioning',
'running',
'stopped',
'suspended',
'failed',
'deleting',
'deleted'
);
CREATE TABLE public.vms (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
project_id uuid NOT NULL REFERENCES public.projects(id) ON DELETE CASCADE,
cluster_id uuid NOT NULL REFERENCES public.clusters(id) ON DELETE RESTRICT,
proxmox_vmid integer NOT NULL,
node text NOT NULL,
name text NOT NULL,
status public.vm_status NOT NULL DEFAULT 'provisioning',
vcpu integer NOT NULL,
ram_mb integer NOT NULL,
disk_gb integer NOT NULL,
created_at timestamptz NOT NULL DEFAULT now(),
updated_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT vms_proxmox_vmid_check CHECK (proxmox_vmid > 0),
CONSTRAINT vms_node_not_blank_check CHECK (btrim(node) <> ''),
CONSTRAINT vms_name_not_blank_check CHECK (btrim(name) <> ''),
CONSTRAINT vms_vcpu_check CHECK (vcpu > 0),
CONSTRAINT vms_ram_mb_check CHECK (ram_mb > 0),
CONSTRAINT vms_disk_gb_check CHECK (disk_gb > 0)
);
CREATE UNIQUE INDEX vms_cluster_id_proxmox_vmid_key ON public.vms (cluster_id, proxmox_vmid);
CREATE INDEX vms_project_id_idx ON public.vms (project_id);
CREATE INDEX vms_cluster_id_idx ON public.vms (cluster_id);
CREATE INDEX vms_status_idx ON public.vms (status);
CREATE TABLE public.ssh_keys (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
tenant_id uuid NOT NULL REFERENCES public.tenants(id) ON DELETE CASCADE,
name text NOT NULL,
public_key text NOT NULL,
created_at timestamptz NOT NULL DEFAULT now(),
CONSTRAINT ssh_keys_name_not_blank_check CHECK (btrim(name) <> ''),
CONSTRAINT ssh_keys_public_key_not_blank_check CHECK (btrim(public_key) <> '')
);
CREATE INDEX ssh_keys_tenant_id_idx ON public.ssh_keys (tenant_id);