Files
hackerspace.sh/scripts/002_schema_fixes.sql
T
2026-03-11 04:44:48 +00:00

83 lines
3.1 KiB
PL/PgSQL

-- Drop and recreate tables that need schema fixes
-- This script fixes the schema to match the application code
-- Fix spaces table: rename public_directory to public_member_directory
alter table if exists public.spaces
rename column public_directory to public_member_directory;
-- Fix space_members table: use text fields instead of enums, add email/payment columns
alter table if exists public.space_members
add column if not exists email text,
add column if not exists payment_status text,
add column if not exists payment_note text,
add column if not exists last_paid_at timestamp with time zone;
-- Make user_id nullable for imported members who haven't signed up yet
alter table if exists public.space_members
alter column user_id drop not null;
-- Fix tasks table: add task_type text column for easier filtering
alter table if exists public.tasks
add column if not exists task_type text default 'chore',
add column if not exists progress integer default 0,
add column if not exists recurrence text,
add column if not exists area text,
add column if not exists assigned_to text;
-- Fix projects table: add missing columns
alter table if exists public.projects
add column if not exists progress integer default 0,
add column if not exists task_count integer default 0,
add column if not exists tags text[] default '{}',
add column if not exists category text,
add column if not exists assignees text,
add column if not exists due_date date,
add column if not exists description text;
-- Fix knowledge_base table
alter table if exists public.knowledge_base
add column if not exists pinned boolean default false,
add column if not exists area text,
add column if not exists access_level text default 'all_members',
add column if not exists description text,
add column if not exists updated_by text;
-- Fix area_leads table
alter table if exists public.area_leads
add column if not exists lead_handle text,
add column if not exists status text default 'active';
-- Fix contacts table
alter table if exists public.contacts
add column if not exists note text,
add column if not exists group_label text;
-- Fix comms_channels: add member_count
alter table if exists public.comms_channels
add column if not exists member_count integer default 0,
add column if not exists unread_count integer default 0;
-- Seed default channels when space is created via trigger
create or replace function public.create_default_channels()
returns trigger
language plpgsql
security definer
set search_path = public
as $$
begin
insert into public.comms_channels (space_id, name, channel_type, description) values
(new.id, 'general', 'general', 'General discussion for all members'),
(new.id, 'announcements', 'general', 'Official announcements from board and admin'),
(new.id, 'random', 'general', 'Off-topic chatter'),
(new.id, 'facilities', 'ops', 'Facilities and maintenance discussion')
on conflict do nothing;
return new;
end;
$$;
drop trigger if exists on_space_created on public.spaces;
create trigger on_space_created
after insert on public.spaces
for each row
execute function public.create_default_channels();