Add initial project structure with Docker setup and frontend/backend files
This commit is contained in:
50
db/init.sql
Executable file
50
db/init.sql
Executable file
@@ -0,0 +1,50 @@
|
||||
-- Create Users table
|
||||
CREATE TABLE IF NOT EXISTS users (
|
||||
id SERIAL PRIMARY KEY,
|
||||
name VARCHAR(100) NOT NULL,
|
||||
email VARCHAR(120) UNIQUE NOT NULL,
|
||||
age INTEGER NOT NULL,
|
||||
location VARCHAR(100) NOT NULL,
|
||||
gender VARCHAR(10) NOT NULL,
|
||||
password_hash VARCHAR(128) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Create Messages table
|
||||
CREATE TABLE IF NOT EXISTS messages (
|
||||
id SERIAL PRIMARY KEY,
|
||||
sender_id INTEGER NOT NULL REFERENCES users(id),
|
||||
receiver_id INTEGER NOT NULL REFERENCES users(id),
|
||||
content VARCHAR(500) NOT NULL,
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Create index for faster queries on location
|
||||
CREATE INDEX IF NOT EXISTS idx_users_location ON users(location);
|
||||
|
||||
-- Create indexes for faster message retrieval
|
||||
CREATE INDEX IF NOT EXISTS idx_messages_sender ON messages(sender_id);
|
||||
CREATE INDEX IF NOT EXISTS idx_messages_receiver ON messages(receiver_id);
|
||||
|
||||
-- Function to update the updated_at column
|
||||
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
||||
RETURNS TRIGGER AS $$
|
||||
BEGIN
|
||||
NEW.updated_at = CURRENT_TIMESTAMP;
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$ language 'plpgsql';
|
||||
|
||||
-- Drop the trigger if it already exists to avoid conflicts
|
||||
DROP TRIGGER IF EXISTS update_users_updated_at ON users;
|
||||
|
||||
-- Create trigger to automatically update the updated_at column
|
||||
CREATE TRIGGER update_users_updated_at
|
||||
BEFORE UPDATE ON users
|
||||
FOR EACH ROW
|
||||
EXECUTE FUNCTION update_updated_at_column();
|
||||
|
||||
-- Grant necessary permissions to workout_user
|
||||
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO workout_user;
|
||||
GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO workout_user;
|
||||
Reference in New Issue
Block a user