Files
backend/database/migrations/028_favorites.sql
T
Ali Reza bb59d5e9ba Initial commit: Meshkee CMS API
NestJS backend with Prisma, Docker Compose for Postgres/Redis, and deploy docs for the production VM.
2026-07-21 17:52:36 +03:30

43 lines
1.5 KiB
SQL

-- Customer product favorites (per business)
CREATE TABLE favorites (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
business_id BIGINT NOT NULL,
user_id BIGINT NOT NULL,
product_id BIGINT NOT NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
CONSTRAINT favorites_business_id_fkey
FOREIGN KEY (business_id) REFERENCES businesses (id) ON DELETE CASCADE,
CONSTRAINT favorites_user_id_fkey
FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE,
CONSTRAINT favorites_product_id_fkey
FOREIGN KEY (product_id) REFERENCES products (id) ON DELETE CASCADE,
CONSTRAINT favorites_business_user_product_unique
UNIQUE (business_id, user_id, product_id)
);
CREATE INDEX idx_favorites_business_user_created
ON favorites (business_id, user_id, created_at DESC);
CREATE INDEX idx_favorites_product_id
ON favorites (product_id);
CREATE TRIGGER favorites_set_updated_at
BEFORE UPDATE ON favorites
FOR EACH ROW
EXECUTE FUNCTION set_updated_at();
INSERT INTO permissions (name, slug, group_name, description) VALUES
('Add own favorites', 'favorites.create', 'favorites', 'Add products to own favorites'),
('Remove own favorites', 'favorites.delete', 'favorites', 'Remove products from own favorites')
ON CONFLICT (slug) DO NOTHING;
INSERT INTO role_permissions (role_id, permission_id)
SELECT r.id, p.id
FROM roles r
JOIN permissions p ON p.slug IN ('favorites.create', 'favorites.delete')
WHERE r.slug = 'customer'
ON CONFLICT DO NOTHING;