Files
inbox-negotiator/supabase/migrations/20250607008000_add_debt_variables.sql

54 lines
1.6 KiB
PL/PgSQL

-- Create debt_variables table to store variable values for each debt
CREATE TABLE IF NOT EXISTS debt_variables (
id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
debt_id uuid REFERENCES debts(id) ON DELETE CASCADE NOT NULL,
variable_name text NOT NULL,
variable_value text,
created_at timestamptz DEFAULT now(),
updated_at timestamptz DEFAULT now(),
UNIQUE(debt_id, variable_name)
);
-- Enable RLS
ALTER TABLE debt_variables ENABLE ROW LEVEL SECURITY;
-- Create policies for debt_variables
CREATE POLICY "Users can manage their debt variables"
ON debt_variables
FOR ALL
TO authenticated
USING (
EXISTS (
SELECT 1 FROM debts
WHERE debts.id = debt_variables.debt_id
AND debts.user_id = auth.uid()
)
)
WITH CHECK (
EXISTS (
SELECT 1 FROM debts
WHERE debts.id = debt_variables.debt_id
AND debts.user_id = auth.uid()
)
);
-- Create indexes for performance
CREATE INDEX IF NOT EXISTS idx_debt_variables_debt_id ON debt_variables(debt_id);
CREATE INDEX IF NOT EXISTS idx_debt_variables_name ON debt_variables(variable_name);
-- Create function to update updated_at timestamp
CREATE OR REPLACE FUNCTION update_debt_variables_updated_at_column()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ language 'plpgsql';
-- Create trigger for updated_at
DROP TRIGGER IF EXISTS update_debt_variables_updated_at ON debt_variables;
CREATE TRIGGER update_debt_variables_updated_at
BEFORE UPDATE ON debt_variables
FOR EACH ROW
EXECUTE FUNCTION update_debt_variables_updated_at_column();