mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-15 03:53:43 +00:00
fix(#64): Address PR comments
This commit is contained in:
@@ -0,0 +1,46 @@
|
||||
-- Add pokedex_entries_mapping table to explicitly define which entries belong to each pokedex
|
||||
-- This fixes the stats functions ambiguity issue by providing an explicit definition of expected entries
|
||||
|
||||
-- Create pokedex_entries_mapping table
|
||||
CREATE TABLE pokedex_entries_mapping (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
"pokedexId" UUID NOT NULL REFERENCES pokedexes(id) ON DELETE CASCADE,
|
||||
"pokedexEntryId" BIGINT NOT NULL REFERENCES pokedex_entries(id) ON DELETE CASCADE,
|
||||
UNIQUE("pokedexId", "pokedexEntryId")
|
||||
);
|
||||
|
||||
-- Create indexes for performance
|
||||
CREATE INDEX idx_pokedex_entries_mapping_pokedex_id ON pokedex_entries_mapping("pokedexId");
|
||||
CREATE INDEX idx_pokedex_entries_mapping_entry_id ON pokedex_entries_mapping("pokedexEntryId");
|
||||
|
||||
-- Enable RLS
|
||||
ALTER TABLE pokedex_entries_mapping ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- RLS Policies
|
||||
|
||||
-- Public read access (mapping is reference data)
|
||||
CREATE POLICY "Anyone can view pokedex entries mapping"
|
||||
ON pokedex_entries_mapping
|
||||
FOR SELECT USING (true);
|
||||
|
||||
-- Users can only insert mappings for their own pokedexes
|
||||
CREATE POLICY "Users can insert own pokedex mappings"
|
||||
ON pokedex_entries_mapping
|
||||
FOR INSERT WITH CHECK (
|
||||
EXISTS (
|
||||
SELECT 1 FROM pokedexes
|
||||
WHERE pokedexes.id = pokedex_entries_mapping."pokedexId"
|
||||
AND pokedexes."userId" = auth.uid()
|
||||
)
|
||||
);
|
||||
|
||||
-- Users can only delete mappings for their own pokedexes
|
||||
CREATE POLICY "Users can delete own pokedex mappings"
|
||||
ON pokedex_entries_mapping
|
||||
FOR DELETE USING (
|
||||
EXISTS (
|
||||
SELECT 1 FROM pokedexes
|
||||
WHERE pokedexes.id = pokedex_entries_mapping."pokedexId"
|
||||
AND pokedexes."userId" = auth.uid()
|
||||
)
|
||||
);
|
||||
Reference in New Issue
Block a user