mirror of
https://github.com/FranP-code/inbox-negotiator.git
synced 2025-10-13 00:42:26 +00:00
54 lines
1.6 KiB
PL/PgSQL
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();
|