-- PostgreSQL Database Setup Script for Disk Reorganizer -- Database: disk_reorganizer_db -- User: disk_reorg_user -- Create the database (run as superuser: auction) CREATE DATABASE disk_reorganizer_db WITH ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' TEMPLATE = template0; -- Connect to the new database \c disk_reorganizer_db -- Create the user CREATE USER disk_reorg_user WITH PASSWORD 'heel-goed-wachtwoord'; -- Create files table CREATE TABLE IF NOT EXISTS files ( path TEXT PRIMARY KEY, size BIGINT NOT NULL, modified_time DOUBLE PRECISION NOT NULL, disk TEXT NOT NULL, checksum TEXT, status TEXT DEFAULT 'indexed', created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- Create index on disk column for faster queries CREATE INDEX IF NOT EXISTS idx_files_disk ON files(disk); CREATE INDEX IF NOT EXISTS idx_files_status ON files(status); -- Create operations table CREATE TABLE IF NOT EXISTS operations ( id SERIAL PRIMARY KEY, source_path TEXT NOT NULL, dest_path TEXT NOT NULL, operation_type TEXT NOT NULL, executed INTEGER DEFAULT 0, verified INTEGER DEFAULT 0, error TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, executed_at TIMESTAMP ); -- Create index on operations for faster lookups CREATE INDEX IF NOT EXISTS idx_operations_executed ON operations(executed); CREATE INDEX IF NOT EXISTS idx_operations_source ON operations(source_path); -- Grant privileges to disk_reorg_user GRANT CONNECT ON DATABASE disk_reorganizer_db TO disk_reorg_user; GRANT USAGE ON SCHEMA public TO disk_reorg_user; GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE files TO disk_reorg_user; GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE operations TO disk_reorg_user; GRANT USAGE, SELECT ON SEQUENCE operations_id_seq TO disk_reorg_user; -- Create function to update 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 for files table CREATE TRIGGER update_files_updated_at BEFORE UPDATE ON files FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); -- Display success message \echo 'Database setup completed successfully!' \echo 'Database: disk_reorganizer_db' \echo 'User: disk_reorg_user' \echo 'Tables created: files, operations' \echo 'Indexes and triggers created 1)'