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.
60 lines
2.1 KiB
SQL
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); |