Use Zammad IDs for organization links

This commit is contained in:
michael committed 2026-08-11 14:47:11 +02:00
1 parent dcc115a82c
commit a760f423a4
2 files changed
+120 -44

No files matched your search

+81 -5
View File
@@ -97,7 +97,7 @@ export async function migrate() {
CREATE TABLE IF NOT EXISTS tickets (
id BIGSERIAL PRIMARY KEY,
ticket_number TEXT NOT NULL UNIQUE,
organization_id BIGINT REFERENCES organizations(id),
organization_id BIGINT REFERENCES organizations(zammad_id),
customer_name TEXT,
work_type TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
@@ -107,7 +107,7 @@ export async function migrate() {
`);
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS customer_name TEXT;");
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS organization_id BIGINT REFERENCES organizations(id);");
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS organization_id BIGINT REFERENCES organizations(zammad_id);");
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS work_type TEXT;");
await query(`
ALTER TABLE tickets
@@ -130,7 +130,7 @@ export async function migrate() {
CREATE TABLE IF NOT EXISTS sessions (
id BIGSERIAL PRIMARY KEY,
ticket_id BIGINT NOT NULL REFERENCES tickets(id) ON DELETE CASCADE,
organization_id BIGINT REFERENCES organizations(id),
organization_id BIGINT REFERENCES organizations(zammad_id),
customer_name TEXT NOT NULL,
activity TEXT NOT NULL,
work_type TEXT NOT NULL,
@@ -151,7 +151,7 @@ export async function migrate() {
`);
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS user_id BIGINT REFERENCES users(id);");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS organization_id BIGINT REFERENCES organizations(id);");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS organization_id BIGINT REFERENCES organizations(zammad_id);");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_billing_id BIGINT;");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_billing_slot_id BIGINT;");
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_occurrence_date DATE;");
@@ -173,7 +173,7 @@ export async function migrate() {
id BIGSERIAL PRIMARY KEY,
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
ticket_number TEXT,
organization_id BIGINT NOT NULL REFERENCES organizations(id),
organization_id BIGINT NOT NULL REFERENCES organizations(zammad_id),
activity TEXT NOT NULL,
work_type TEXT NOT NULL,
recurrence_type TEXT NOT NULL,
@@ -191,6 +191,82 @@ export async function migrate() {
);
`);
await query(`
ALTER TABLE tickets DROP CONSTRAINT IF EXISTS tickets_organization_id_fkey;
ALTER TABLE sessions DROP CONSTRAINT IF EXISTS sessions_organization_id_fkey;
ALTER TABLE recurring_billings DROP CONSTRAINT IF EXISTS recurring_billings_organization_id_fkey;
`);
await query(`
UPDATE tickets t
SET organization_id = o.zammad_id
FROM organizations o
WHERE t.organization_id = o.id
AND NOT EXISTS (
SELECT 1
FROM organizations current_org
WHERE current_org.zammad_id = t.organization_id
);
`);
await query(`
UPDATE sessions s
SET organization_id = o.zammad_id
FROM organizations o
WHERE s.organization_id = o.id
AND NOT EXISTS (
SELECT 1
FROM organizations current_org
WHERE current_org.zammad_id = s.organization_id
);
`);
await query(`
UPDATE recurring_billings rb
SET organization_id = o.zammad_id
FROM organizations o
WHERE rb.organization_id = o.id
AND NOT EXISTS (
SELECT 1
FROM organizations current_org
WHERE current_org.zammad_id = rb.organization_id
);
`);
await query(`
UPDATE tickets
SET organization_id = NULL
WHERE organization_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM organizations o
WHERE o.zammad_id = tickets.organization_id
);
`);
await query(`
UPDATE sessions
SET organization_id = NULL
WHERE organization_id IS NOT NULL
AND NOT EXISTS (
SELECT 1
FROM organizations o
WHERE o.zammad_id = sessions.organization_id
);
`);
await query(`
ALTER TABLE tickets
ADD CONSTRAINT tickets_organization_id_fkey
FOREIGN KEY (organization_id) REFERENCES organizations(zammad_id);
ALTER TABLE sessions
ADD CONSTRAINT sessions_organization_id_fkey
FOREIGN KEY (organization_id) REFERENCES organizations(zammad_id);
ALTER TABLE recurring_billings
ADD CONSTRAINT recurring_billings_organization_id_fkey
FOREIGN KEY (organization_id) REFERENCES organizations(zammad_id);
`);
await query("ALTER TABLE recurring_billings ALTER COLUMN ticket_number DROP NOT NULL;");
await query("ALTER TABLE recurring_billings DROP CONSTRAINT IF EXISTS recurring_billings_ticket_number_format;");
await query("UPDATE recurring_billings SET recurrence_type = 'every_n_weeks' WHERE recurrence_type = 'every_n_days';");