mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-19 12:43:37 +02:00
feat(chat): integrate chat project into monorepo with full app structure
- Restructure chat as apps/mobile, apps/web, apps/landing, backend - Add NestJS backend for secure Azure OpenAI API calls - Remove exposed API key from mobile app (security fix) - Add shared chat-types package - Create SvelteKit web app scaffold - Create Astro landing page scaffold - Update pnpm workspace configuration - Add project-level CLAUDE.md documentation 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
fcf3a344b1
commit
c638a7ffee
155 changed files with 22622 additions and 348 deletions
45
chat/apps/mobile/scripts/spaces/create_spaces_tables.sql
Normal file
45
chat/apps/mobile/scripts/spaces/create_spaces_tables.sql
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
-- Create spaces table
|
||||
CREATE TABLE IF NOT EXISTS public.spaces (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
name TEXT NOT NULL,
|
||||
description TEXT,
|
||||
owner_id UUID NOT NULL REFERENCES public.users(id) ON DELETE CASCADE,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
is_archived BOOLEAN DEFAULT false
|
||||
);
|
||||
|
||||
-- Add comments for documentation
|
||||
COMMENT ON TABLE public.spaces IS 'Collaborative spaces for organizing conversations';
|
||||
COMMENT ON COLUMN spaces.name IS 'Name of the space';
|
||||
COMMENT ON COLUMN spaces.description IS 'Optional description of the space';
|
||||
COMMENT ON COLUMN spaces.owner_id IS 'User ID of the space owner';
|
||||
COMMENT ON COLUMN spaces.is_archived IS 'Indicates whether the space is archived';
|
||||
|
||||
-- Create space_members table with roles/permissions
|
||||
CREATE TABLE IF NOT EXISTS public.space_members (
|
||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
space_id UUID NOT NULL REFERENCES public.spaces(id) ON DELETE CASCADE,
|
||||
user_id UUID NOT NULL REFERENCES public.users(id) ON DELETE CASCADE,
|
||||
role TEXT NOT NULL CHECK (role IN ('owner', 'admin', 'member', 'viewer')),
|
||||
invitation_status TEXT NOT NULL DEFAULT 'pending' CHECK (invitation_status IN ('pending', 'accepted', 'declined')),
|
||||
invited_by UUID REFERENCES public.users(id),
|
||||
invited_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
joined_at TIMESTAMP WITH TIME ZONE,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
UNIQUE(space_id, user_id)
|
||||
);
|
||||
|
||||
-- Add comments for space_members
|
||||
COMMENT ON TABLE public.space_members IS 'Members of collaborative spaces with defined roles';
|
||||
COMMENT ON COLUMN space_members.role IS 'Role of the user in the space (owner, admin, member, viewer)';
|
||||
COMMENT ON COLUMN space_members.invitation_status IS 'Status of the invitation (pending, accepted, declined)';
|
||||
|
||||
-- Modify conversations table to add space_id
|
||||
ALTER TABLE public.conversations
|
||||
ADD COLUMN IF NOT EXISTS space_id UUID REFERENCES public.spaces(id) ON DELETE SET NULL;
|
||||
|
||||
-- Create indexes for faster queries
|
||||
CREATE INDEX IF NOT EXISTS idx_conversations_space_id ON conversations(space_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_conversations_space_user ON conversations(space_id, user_id);
|
||||
Loading…
Add table
Add a link
Reference in a new issue