Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update database script #10

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
52 changes: 26 additions & 26 deletions backend/db-scripts/script-1.1.sql
Original file line number Diff line number Diff line change
@@ -1,62 +1,62 @@
-- Create table for Project
CREATE TABLE projects (
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
logo VARCHAR(1000),
title VARCHAR(50) NOT NULL,
description VARCHAR(200) NOT NULL,
link VARCHAR(200),
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(36),
updated_by VARCHAR(36),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_by CHAR(36),
updated_by CHAR(36),
FOREIGN KEY (created_by) REFERENCES auth_user(id) ON DELETE SET NULL,
FOREIGN KEY (updated_by) REFERENCES auth_user(id) ON DELETE SET NULL
);

-- Create table for ProjectImage
CREATE TABLE project_images (
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
project_id VARCHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
project_id CHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
image VARCHAR(1000),
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- Create table for Comment
CREATE TABLE projects_comments (
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
comment TEXT NOT NULL,
project_id VARCHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id VARCHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(36),
updated_by VARCHAR(36),
project_id CHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id CHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_by CHAR(36),
updated_by CHAR(36),
FOREIGN KEY (created_by) REFERENCES auth_user(id) ON DELETE SET NULL,
FOREIGN KEY (updated_by) REFERENCES auth_user(id) ON DELETE SET NULL
);

-- Create table for Vote
CREATE TABLE projects_votes (
id VARCHAR(36) PRIMARY KEY DEFAULT uuid_generate_v4(),
vote VARCHAR(10) NOT NULL CHECK (vote IN ('upvote', 'downvote')),
project_id VARCHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id VARCHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
created_by VARCHAR(36),
updated_by VARCHAR(36),
id CHAR(36) PRIMARY KEY DEFAULT (UUID()),
vote ENUM('upvote', 'downvote') NOT NULL,
project_id CHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id CHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_by CHAR(36),
updated_by CHAR(36),
FOREIGN KEY (created_by) REFERENCES auth_user(id) ON DELETE SET NULL,
FOREIGN KEY (updated_by) REFERENCES auth_user(id) ON DELETE SET NULL
);

-- Create many-to-many relationship table for Project and User
CREATE TABLE projects_contributors (
project_id VARCHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id VARCHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
project_id CHAR(36) REFERENCES projects(id) ON DELETE CASCADE,
user_id CHAR(36) REFERENCES auth_user(id) ON DELETE CASCADE,
PRIMARY KEY (project_id, user_id)
);

-- Indexes and additional constraints
CREATE INDEX idx_projects_created_at ON projects(created_at);
CREATE INDEX idx_projects_comments_created_at ON projects_comments(created_at);
CREATE INDEX idx_projects_votes_created_at ON projects_votes(created_at);
CREATE INDEX idx_projects_votes_created_at ON projects_votes(created_at);