| 57 | }; |
| 58 | |
| 59 | const createTables = async (client) => { |
| 60 | logger.info('📊 Creating database tables...'); |
| 61 | |
| 62 | const tables = [ |
| 63 | |
| 64 | `CREATE TABLE IF NOT EXISTS guild_configs ( |
| 65 | guild_id VARCHAR(255) PRIMARY KEY, |
| 66 | prefix VARCHAR(10) DEFAULT '!', |
| 67 | welcome_channel VARCHAR(255), |
| 68 | welcome_message TEXT, |
| 69 | welcome_enabled BOOLEAN DEFAULT false, |
| 70 | autorole_ids TEXT[] DEFAULT '{}', |
| 71 | modlog_channel VARCHAR(255), |
| 72 | settings JSONB DEFAULT '{}', |
| 73 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 74 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP |
| 75 | )`, |
| 76 | |
| 77 | `CREATE TABLE IF NOT EXISTS user_levels ( |
| 78 | id SERIAL PRIMARY KEY, |
| 79 | user_id VARCHAR(255) NOT NULL, |
| 80 | guild_id VARCHAR(255) NOT NULL, |
| 81 | xp BIGINT DEFAULT 0, |
| 82 | level INT DEFAULT 1, |
| 83 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 84 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 85 | UNIQUE(user_id, guild_id) |
| 86 | )`, |
| 87 | |
| 88 | `CREATE TABLE IF NOT EXISTS user_economy ( |
| 89 | id SERIAL PRIMARY KEY, |
| 90 | user_id VARCHAR(255) NOT NULL, |
| 91 | guild_id VARCHAR(255) NOT NULL, |
| 92 | balance BIGINT DEFAULT 0, |
| 93 | bank BIGINT DEFAULT 0, |
| 94 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 95 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 96 | UNIQUE(user_id, guild_id) |
| 97 | )`, |
| 98 | |
| 99 | `CREATE TABLE IF NOT EXISTS birthdays ( |
| 100 | id SERIAL PRIMARY KEY, |
| 101 | user_id VARCHAR(255) NOT NULL, |
| 102 | guild_id VARCHAR(255) NOT NULL, |
| 103 | month INT NOT NULL, |
| 104 | day INT NOT NULL, |
| 105 | created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 106 | updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| 107 | UNIQUE(user_id, guild_id) |
| 108 | )`, |
| 109 | |
| 110 | `CREATE TABLE IF NOT EXISTS tickets ( |
| 111 | id SERIAL PRIMARY KEY, |
| 112 | ticket_id VARCHAR(255) UNIQUE NOT NULL, |
| 113 | guild_id VARCHAR(255) NOT NULL, |
| 114 | user_id VARCHAR(255) NOT NULL, |
| 115 | channel_id VARCHAR(255) NOT NULL, |
| 116 | status VARCHAR(50) DEFAULT 'open', |