Skip to content

Commit 76457cc

Browse files
committed
Merge branch 'main' into dev
2 parents 44bff24 + f57f13d commit 76457cc

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
-- Create services table
2+
CREATE TABLE IF NOT EXISTS services (
3+
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
4+
name VARCHAR(255) NOT NULL,
5+
description TEXT NOT NULL,
6+
price DECIMAL(10,2) NOT NULL CHECK (price >= 0),
7+
duration VARCHAR(100) NOT NULL,
8+
features TEXT[] NOT NULL DEFAULT '{}',
9+
category VARCHAR(100) NOT NULL,
10+
is_active BOOLEAN DEFAULT true,
11+
created_by UUID REFERENCES codev(id),
12+
created_at TIMESTAMP DEFAULT NOW(),
13+
updated_at TIMESTAMP DEFAULT NOW()
14+
);
15+
16+
-- Create indexes for better performance
17+
CREATE INDEX IF NOT EXISTS idx_services_category ON services(category);
18+
CREATE INDEX IF NOT EXISTS idx_services_is_active ON services(is_active);
19+
CREATE INDEX IF NOT EXISTS idx_services_created_by ON services(created_by);
20+
21+
-- Enable Row Level Security
22+
ALTER TABLE services ENABLE ROW LEVEL SECURITY;
23+
24+
-- RLS Policies for services table
25+
CREATE POLICY "Services are viewable by authenticated users" ON services
26+
FOR SELECT USING (auth.role() = 'authenticated');
27+
28+
CREATE POLICY "Only admins can insert services" ON services
29+
FOR INSERT WITH CHECK (
30+
EXISTS (
31+
SELECT 1 FROM codev
32+
WHERE id = auth.uid()
33+
AND role_id = 1
34+
)
35+
);
36+
37+
CREATE POLICY "Only admins can update services" ON services
38+
FOR UPDATE USING (
39+
EXISTS (
40+
SELECT 1 FROM codev
41+
WHERE id = auth.uid()
42+
AND role_id = 1
43+
)
44+
);
45+
46+
CREATE POLICY "Only admins can delete services" ON services
47+
FOR DELETE USING (
48+
EXISTS (
49+
SELECT 1 FROM codev
50+
WHERE id = auth.uid()
51+
AND role_id = 1
52+
)
53+
);
54+
55+
-- Create trigger to update updated_at timestamp
56+
CREATE OR REPLACE FUNCTION update_updated_at_column()
57+
RETURNS TRIGGER AS $$
58+
BEGIN
59+
NEW.updated_at = NOW();
60+
RETURN NEW;
61+
END;
62+
$$ language 'plpgsql';
63+
64+
CREATE TRIGGER update_services_updated_at BEFORE UPDATE ON services
65+
FOR EACH ROW EXECUTE FUNCTION update_updated_at_column();

0 commit comments

Comments
 (0)