fix(docs): remove outdated DB_README and atomic collection creation SQL file
This commit is contained in:
parent
77dc22ce05
commit
c4be70a294
3 changed files with 0 additions and 165 deletions
116
DB_README.md
116
DB_README.md
|
|
@ -1,116 +0,0 @@
|
|||
# Database & Backend Notes
|
||||
|
||||
This document is the operational source of truth for database setup and backend contracts used by the app.
|
||||
|
||||
## Stack
|
||||
|
||||
- Supabase Postgres
|
||||
- Supabase Auth
|
||||
- Supabase Storage
|
||||
- Supabase RPC functions
|
||||
|
||||
## Scope
|
||||
|
||||
This file intentionally stays concise. Do not paste full raw data-dictionary exports here.
|
||||
|
||||
If you need snapshots, store them separately (for example in a local `db_exports/` folder) and summarize only key outcomes in this file.
|
||||
|
||||
## Environments
|
||||
|
||||
Document environment endpoints and ownership:
|
||||
|
||||
- Development: TBD
|
||||
- Staging: TBD
|
||||
- Production: TBD
|
||||
|
||||
## Core App Tables
|
||||
|
||||
Keep this section focused on app-owned tables (not full Supabase system schemas).
|
||||
|
||||
- `collections`
|
||||
- `collection_members`
|
||||
- `hotwheels`
|
||||
- `global_cars`
|
||||
- `car_votes`
|
||||
- `car_reports`
|
||||
|
||||
## Key RPC Functions
|
||||
|
||||
- `get_collection_counts`
|
||||
- `get_collection_members`
|
||||
- `get_user_id_by_email`
|
||||
- `remove_collection_member`
|
||||
- `create_collection_with_owner` (atomic create path)
|
||||
|
||||
## Atomic Collection Creation
|
||||
|
||||
App code now prefers a transactional RPC for collection creation:
|
||||
|
||||
- App integration: `CollectionService.create()`
|
||||
- Migration script: `db/atomic_create_collection_with_owner.sql`
|
||||
|
||||
### Apply
|
||||
|
||||
Run the script in Supabase SQL Editor:
|
||||
|
||||
- `db/atomic_create_collection_with_owner.sql`
|
||||
|
||||
## RLS Expectations
|
||||
|
||||
For each core table, document:
|
||||
|
||||
- who can `select`
|
||||
- who can `insert`
|
||||
- who can `update`
|
||||
- who can `delete`
|
||||
- special policy conditions
|
||||
|
||||
Status: TBD
|
||||
|
||||
## Storage
|
||||
|
||||
- Bucket: `car-images` (private)
|
||||
- Access model: signed URLs from app/backend
|
||||
- Ownership path pattern: `{auth.uid()}/{entry.id}.jpg`
|
||||
|
||||
## Migration Workflow
|
||||
|
||||
1. Write SQL migration in repository (`db/` or migration folder).
|
||||
2. Validate in development.
|
||||
3. Verify RLS impact.
|
||||
4. Promote to staging.
|
||||
5. Promote to production.
|
||||
6. Record change summary in this document.
|
||||
|
||||
## Reproducible Schema Snapshot
|
||||
|
||||
- Query pack: `db/export_schema.sql`
|
||||
- Goal: produce repeatable app-focused schema snapshots without bloating docs
|
||||
|
||||
Suggested usage:
|
||||
|
||||
1. Run `db/export_schema.sql` in Supabase SQL Editor.
|
||||
2. Export result sets (CSV/JSON) and store externally (for example `db_exports/` in local/private ops repo).
|
||||
3. Summarize only key changes in this `DB_README.md`.
|
||||
|
||||
## Operational Checklist
|
||||
|
||||
Before deploy:
|
||||
|
||||
- [ ] Migration SQL reviewed
|
||||
- [ ] RLS policy impact checked
|
||||
- [ ] RPC grant/permissions verified
|
||||
- [ ] Rollback strategy identified
|
||||
- [ ] App compatibility validated (`flutter analyze`, tests, smoke flows)
|
||||
|
||||
## Known Risks / Notes
|
||||
|
||||
- Keep app and DB changes synchronized when changing RPC signatures.
|
||||
- Favor DB-side transactional functions for multi-step write operations.
|
||||
- Avoid exposing backend internals in user-facing error messages.
|
||||
|
||||
## References
|
||||
|
||||
- App service integration: `lib/services/collection_service.dart`
|
||||
- Atomic RPC migration: `db/atomic_create_collection_with_owner.sql`
|
||||
- Security process: `SECURITY.md`
|
||||
|
|
@ -1,48 +0,0 @@
|
|||
-- Atomic collection creation + owner membership insert
|
||||
-- Run this in Supabase SQL Editor.
|
||||
|
||||
create or replace function public.create_collection_with_owner(
|
||||
p_name text,
|
||||
p_description text default null
|
||||
)
|
||||
returns public.collections
|
||||
language plpgsql
|
||||
security definer
|
||||
set search_path = public
|
||||
as $$
|
||||
declare
|
||||
v_user_id uuid := auth.uid();
|
||||
v_collection public.collections;
|
||||
begin
|
||||
if v_user_id is null then
|
||||
raise exception 'Not authenticated';
|
||||
end if;
|
||||
|
||||
insert into public.collections (
|
||||
name,
|
||||
owner_id,
|
||||
description
|
||||
)
|
||||
values (
|
||||
p_name,
|
||||
v_user_id,
|
||||
nullif(trim(p_description), '')
|
||||
)
|
||||
returning * into v_collection;
|
||||
|
||||
insert into public.collection_members (
|
||||
collection_id,
|
||||
user_id,
|
||||
role
|
||||
)
|
||||
values (
|
||||
v_collection.id,
|
||||
v_user_id,
|
||||
'owner'
|
||||
);
|
||||
|
||||
return v_collection;
|
||||
end;
|
||||
$$;
|
||||
|
||||
grant execute on function public.create_collection_with_owner(text, text) to authenticated;
|
||||
|
|
@ -1,4 +1,3 @@
|
|||
-- Reproducible schema export query pack (app-focused)
|
||||
-- Run in Supabase SQL Editor or psql and export results as CSV/JSON.
|
||||
|
||||
-- 1) App tables and columns (public only)
|
||||
|
|
|
|||
Loading…
Reference in a new issue