Weiter
This commit is contained in:
1 parent
c2063fe1ed
commit
07ef8ef025
10 files changed
+1624
-93
No files matched your search
+946
-63
File diff suppressed because it is too large.
Load diff
@@ -139,6 +139,12 @@ export async function migrate() {
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS title TEXT;");
|
||||
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 ADD COLUMN IF NOT EXISTS zammad_ticket_id BIGINT UNIQUE;");
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS zammad_group_id BIGINT;");
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS zammad_priority_id BIGINT;");
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS zammad_state_id BIGINT;");
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS zammad_owner_id BIGINT;");
|
||||
await query("ALTER TABLE tickets ADD COLUMN IF NOT EXISTS zammad_preferences JSONB NOT NULL DEFAULT '{}'::jsonb;");
|
||||
await query(`
|
||||
ALTER TABLE tickets
|
||||
DROP CONSTRAINT IF EXISTS ticket_number_format,
|
||||
@@ -186,6 +192,7 @@ export async function migrate() {
|
||||
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;");
|
||||
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS recurring_occurrence_key TEXT;");
|
||||
await query("ALTER TABLE sessions ADD COLUMN IF NOT EXISTS project_teamspace_entry_id BIGINT;");
|
||||
if (adminId) {
|
||||
await query("UPDATE sessions SET user_id = $1 WHERE user_id IS NULL;", [adminId]);
|
||||
}
|
||||
@@ -505,6 +512,18 @@ export async function migrate() {
|
||||
|
||||
await query("CREATE UNIQUE INDEX IF NOT EXISTS idx_project_teamspace_entries_default ON project_teamspace_entries(project_id) WHERE is_default;");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_project_teamspace_entries_project_order ON project_teamspace_entries(project_id, display_order, id);");
|
||||
await query(`
|
||||
DO $$
|
||||
BEGIN
|
||||
IF NOT EXISTS (
|
||||
SELECT 1 FROM pg_constraint WHERE conname = 'sessions_project_teamspace_entry_fkey'
|
||||
) THEN
|
||||
ALTER TABLE sessions
|
||||
ADD CONSTRAINT sessions_project_teamspace_entry_fkey
|
||||
FOREIGN KEY (project_teamspace_entry_id) REFERENCES project_teamspace_entries(id) ON DELETE SET NULL;
|
||||
END IF;
|
||||
END $$;
|
||||
`);
|
||||
|
||||
await query(`
|
||||
UPDATE tickets t
|
||||
@@ -538,6 +557,45 @@ export async function migrate() {
|
||||
);
|
||||
`);
|
||||
|
||||
await query(`
|
||||
WITH single_entry_projects AS (
|
||||
SELECT
|
||||
p.id AS project_id,
|
||||
p.user_id,
|
||||
p.ticket_id,
|
||||
MIN(pte.id) AS project_teamspace_entry_id
|
||||
FROM projects p
|
||||
JOIN project_teamspace_entries pte ON pte.project_id = p.id
|
||||
GROUP BY p.id, p.user_id, p.ticket_id
|
||||
HAVING COUNT(pte.id) = 1
|
||||
)
|
||||
UPDATE sessions s
|
||||
SET project_teamspace_entry_id = sep.project_teamspace_entry_id
|
||||
FROM single_entry_projects sep
|
||||
WHERE s.ticket_id = sep.ticket_id
|
||||
AND s.user_id = sep.user_id
|
||||
AND s.work_type = 'consulting'
|
||||
AND s.project_teamspace_entry_id IS NULL;
|
||||
`);
|
||||
|
||||
await query(`
|
||||
WITH single_entry_tickets AS (
|
||||
SELECT
|
||||
p.ticket_id,
|
||||
MIN(pte.id) AS project_teamspace_entry_id
|
||||
FROM projects p
|
||||
JOIN project_teamspace_entries pte ON pte.project_id = p.id
|
||||
GROUP BY p.ticket_id
|
||||
HAVING COUNT(pte.id) = 1
|
||||
)
|
||||
UPDATE sessions s
|
||||
SET project_teamspace_entry_id = single_ticket.project_teamspace_entry_id
|
||||
FROM single_entry_tickets single_ticket
|
||||
WHERE s.ticket_id = single_ticket.ticket_id
|
||||
AND s.work_type = 'consulting'
|
||||
AND s.project_teamspace_entry_id IS NULL;
|
||||
`);
|
||||
|
||||
await query(`
|
||||
CREATE TABLE IF NOT EXISTS ticket_todos (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
@@ -601,6 +659,7 @@ export async function migrate() {
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_sessions_user_started ON sessions(user_id, started_at);");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_sessions_user_ticket_started ON sessions(user_id, ticket_id, started_at);");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_sessions_user_organization_started ON sessions(user_id, organization_id, started_at);");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_sessions_project_teamspace_entry ON sessions(project_teamspace_entry_id);");
|
||||
await query("CREATE UNIQUE INDEX IF NOT EXISTS idx_sessions_recurring_occurrence_key ON sessions(recurring_occurrence_key) WHERE recurring_occurrence_key IS NOT NULL;");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_sessions_billing_status ON sessions(billing_status);");
|
||||
await query("CREATE INDEX IF NOT EXISTS idx_ticket_day_closures_day ON ticket_day_closures(day);");
|
||||
|
||||
Reference in new issue
Block a user