123456789101112131415161718192021222324252627282930313233343536373839404142 |
- -- Initialize BYOP Sample Database
- \echo 'Starting database initialization...'
- -- Create users table
- CREATE TABLE IF NOT EXISTS users (
- id SERIAL PRIMARY KEY,
- name VARCHAR(255) NOT NULL,
- email VARCHAR(255) UNIQUE NOT NULL,
- role VARCHAR(100) DEFAULT 'user',
- created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
- updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
- );
- -- Insert sample data
- INSERT INTO users (name, email, role) VALUES
- ('John Doe', 'john@byop.dev', 'admin'),
- ('Jane Smith', 'jane@byop.dev', 'developer'),
- ('Mike Johnson', 'mike@byop.dev', 'designer'),
- ('Sarah Wilson', 'sarah@byop.dev', 'tester')
- ON CONFLICT (email) DO NOTHING;
- -- Create indexes for better performance
- CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
- CREATE INDEX IF NOT EXISTS idx_users_created_at ON users(created_at);
- -- Create a function to update the updated_at timestamp
- CREATE OR REPLACE FUNCTION update_updated_at_column()
- RETURNS TRIGGER AS $$
- BEGIN
- NEW.updated_at = CURRENT_TIMESTAMP;
- RETURN NEW;
- END;
- $$ language 'plpgsql';
- -- Create trigger to automatically update updated_at
- DROP TRIGGER IF EXISTS update_users_updated_at ON users;
- CREATE TRIGGER update_users_updated_at
- BEFORE UPDATE ON users
- FOR EACH ROW
- EXECUTE FUNCTION update_updated_at_column();
- \echo 'Database initialization completed successfully!'
|