init-db.sql•1.72 kB
-- Sample database initialization script
CREATE TABLE IF NOT EXISTS users (
id SERIAL PRIMARY KEY,
username VARCHAR(50) UNIQUE NOT NULL,
email VARCHAR(100) UNIQUE NOT NULL,
full_name VARCHAR(100),
is_active BOOLEAN DEFAULT true,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10, 2) NOT NULL,
stock_quantity INTEGER DEFAULT 0,
category VARCHAR(50),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE IF NOT EXISTS orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
order_number VARCHAR(20) UNIQUE NOT NULL,
total_amount DECIMAL(10, 2) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Insert sample data
INSERT INTO users (username, email, full_name) VALUES
('john_doe', 'john@example.com', 'John Doe'),
('jane_smith', 'jane@example.com', 'Jane Smith'),
('bob_wilson', 'bob@example.com', 'Bob Wilson')
ON CONFLICT (username) DO NOTHING;
INSERT INTO products (name, description, price, stock_quantity, category) VALUES
('Laptop Computer', 'High-performance laptop', 1299.99, 25, 'Electronics'),
('Wireless Mouse', 'Ergonomic wireless mouse', 29.99, 100, 'Electronics'),
('Office Chair', 'Comfortable office chair', 199.99, 15, 'Furniture')
ON CONFLICT DO NOTHING;
INSERT INTO orders (user_id, order_number, total_amount, status) VALUES
(1, 'ORD-2025-001', 1329.98, 'completed'),
(2, 'ORD-2025-002', 229.98, 'shipped'),
(3, 'ORD-2025-003', 62.98, 'pending')
ON CONFLICT (order_number) DO NOTHING;