33 lines
1.1 KiB
PL/PgSQL
33 lines
1.1 KiB
PL/PgSQL
-- Add price and currency to courses table in LMS
|
|
ALTER TABLE courses ADD COLUMN IF NOT EXISTS price DOUBLE PRECISION DEFAULT 0.0;
|
|
ALTER TABLE courses ADD COLUMN IF NOT EXISTS currency VARCHAR(10) DEFAULT 'USD';
|
|
|
|
-- Create general trigger function if not exists
|
|
CREATE OR REPLACE FUNCTION trigger_set_timestamp()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Create transactions table
|
|
CREATE TABLE transactions (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
organization_id UUID NOT NULL REFERENCES organizations(id),
|
|
user_id UUID NOT NULL REFERENCES users(id),
|
|
course_id UUID NOT NULL REFERENCES courses(id),
|
|
amount DOUBLE PRECISION NOT NULL,
|
|
currency VARCHAR(10) NOT NULL,
|
|
status TEXT NOT NULL DEFAULT 'pending', -- 'pending', 'success', 'failure'
|
|
provider_reference TEXT,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- Trigger for updated_at in transactions
|
|
CREATE TRIGGER set_timestamp_transactions
|
|
BEFORE UPDATE ON transactions
|
|
FOR EACH ROW
|
|
EXECUTE PROCEDURE trigger_set_timestamp();
|