You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Verto-Version-Tracking/supabase/migrations/20251222074108_create_clien...

60 lines
2.1 KiB
SQL

/*
# Create Client Charge Mapped Table
1. New Tables
- `client_charge_mapped`
- `id` (uuid, primary key) - Unique identifier
- `orgacode` (text) - Organization code from projects table
- `pet_eventcode` (text) - Event code from transaction_events_master
- `ptr_trancode` (text) - Transaction code from transaction_codes
- `created_at` (timestamptz) - Creation timestamp
- `updated_at` (timestamptz) - Last update timestamp
2. Constraints
- Unique constraint on (orgacode, pet_eventcode, ptr_trancode)
- This ensures no duplicate mappings for the same combination
3. Security
- Enable RLS on the table
- Add policies for authenticated users to manage mappings
*/
CREATE TABLE IF NOT EXISTS client_charge_mapped (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
orgacode text NOT NULL,
pet_eventcode text NOT NULL,
ptr_trancode text NOT NULL,
created_at timestamptz DEFAULT now(),
updated_at timestamptz DEFAULT now(),
CONSTRAINT unique_client_charge_mapping UNIQUE (orgacode, pet_eventcode, ptr_trancode)
);
-- Enable RLS
ALTER TABLE client_charge_mapped ENABLE ROW LEVEL SECURITY;
-- Create policies
CREATE POLICY "Authenticated users can view client charge mappings"
ON client_charge_mapped FOR SELECT
TO authenticated
USING (true);
CREATE POLICY "Authenticated users can insert client charge mappings"
ON client_charge_mapped FOR INSERT
TO authenticated
WITH CHECK (true);
CREATE POLICY "Authenticated users can update client charge mappings"
ON client_charge_mapped FOR UPDATE
TO authenticated
USING (true)
WITH CHECK (true);
CREATE POLICY "Authenticated users can delete client charge mappings"
ON client_charge_mapped FOR DELETE
TO authenticated
USING (true);
-- Create indexes for foreign key lookups
CREATE INDEX IF NOT EXISTS idx_client_charge_mapped_orgacode ON client_charge_mapped(orgacode);
CREATE INDEX IF NOT EXISTS idx_client_charge_mapped_pet_eventcode ON client_charge_mapped(pet_eventcode);
CREATE INDEX IF NOT EXISTS idx_client_charge_mapped_ptr_trancode ON client_charge_mapped(ptr_trancode);