diff --git a/.env.example b/.env.example deleted file mode 100644 index 0be3edc..0000000 --- a/.env.example +++ /dev/null @@ -1,6 +0,0 @@ -# Backend -PORT=4000 -JWT_SECRET=your_jwt_secret -DATABASE_URL=postgres://postgres:postgres@db:5432/whats_the_point -# Frontend -VITE_API_URL=http://localhost:4000 diff --git a/backend/src/db/index.js b/backend/src/db/index.js index df1e692..706b1cb 100644 --- a/backend/src/db/index.js +++ b/backend/src/db/index.js @@ -9,18 +9,42 @@ const __dirname = path.dirname(__filename); let pool; export const initDB = async () => { - const dbConfig = { + const dbName = process.env.DB_NAME || 'whats_the_point'; + + // First connect without specifying database to create it if needed + const baseConfig = { host: process.env.DB_HOST || 'db', user: process.env.DB_USER || 'root', password: process.env.DB_PASSWORD || 'root', - database: process.env.DB_NAME || 'whats_the_point', waitForConnections: true, connectionLimit: 10, queueLimit: 0, multipleStatements: true }; - // Create pool + // Create temporary pool to create database + const tempPool = mysql.createPool(baseConfig); + + try { + const connection = await tempPool.getConnection(); + + // Create database if it doesn't exist + await connection.query(`CREATE DATABASE IF NOT EXISTS \`${dbName}\``); + console.log(`✅ Database '${dbName}' ready`); + connection.release(); + } catch (error) { + console.error('❌ Failed to create database:', error); + throw error; + } finally { + await tempPool.end(); + } + + // Now connect to the specific database + const dbConfig = { + ...baseConfig, + database: dbName + }; + pool = mysql.createPool(dbConfig); // Test connection and run init script diff --git a/docker-compose.yml b/docker-compose.yml index 2af8f70..b176fdd 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,16 +1,20 @@ version: '3.8' services: db: - image: linuxserver/mariadb + image: mariadb:10.11 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: rootpassword MYSQL_DATABASE: whats_the_point - TZ: America/Toronto volumes: - - db_data:/config + - db_data:/var/lib/mysql ports: - "3306:3306" + healthcheck: + test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + interval: 10s + timeout: 5s + retries: 5 web: build: . @@ -24,7 +28,8 @@ services: DB_NAME: whats_the_point TMDB_API_KEY: your_tmdb_api_key_here depends_on: - - db + db: + condition: service_healthy ports: - "4000:4000" volumes: