diff --git a/backend/norkconfig.json b/backend/norkconfig.json index 6d2bd07..be253d9 100644 --- a/backend/norkconfig.json +++ b/backend/norkconfig.json @@ -3,10 +3,10 @@ "lang": "ts", "author": "Filip Rojek", "database": { - "db": "mongodb", - "orm": "mongoose" + "db": "mysql", + "orm": "sequelize" }, "website": "http://filiprojek.cz/", "email": "filip@filiprojek.cz", "version": "3.0.5" -} \ No newline at end of file +} diff --git a/backend/package-lock.json b/backend/package-lock.json index 770ca92..2f5b4d7 100644 --- a/backend/package-lock.json +++ b/backend/package-lock.json @@ -18,6 +18,7 @@ "express-validator": "^6.14.2", "fs-extra": "^10.0.0", "jsonwebtoken": "^9.0.2", + "mariadb": "^3.2.3", "mongoose": "^5.12.3", "pg": "^8.7.1", "pg-hstore": "^2.3.4", @@ -1239,6 +1240,11 @@ "@types/node": "*" } }, + "node_modules/@types/geojson": { + "version": "7946.0.14", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", + "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + }, "node_modules/@types/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", @@ -4670,6 +4676,53 @@ "tmpl": "1.0.5" } }, + "node_modules/mariadb": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/mariadb/-/mariadb-3.2.3.tgz", + "integrity": "sha512-Hyc1ehdUJwzvvzcLU2juZS528wJ6oE8pUlpgY0BAOdpKWcdN1motuugi5lC3jkpCkFpyNknHG7Yg66KASl3aPg==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "@types/node": "^17.0.45", + "denque": "^2.1.0", + "iconv-lite": "^0.6.3", + "lru-cache": "^10.0.1" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/mariadb/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + }, + "node_modules/mariadb/node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/mariadb/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/mariadb/node_modules/lru-cache": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz", + "integrity": "sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==", + "engines": { + "node": "14 || >=16.14" + } + }, "node_modules/media-typer": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", diff --git a/backend/package.json b/backend/package.json index cd1fedd..4cedbac 100644 --- a/backend/package.json +++ b/backend/package.json @@ -28,6 +28,7 @@ "express-validator": "^6.14.2", "fs-extra": "^10.0.0", "jsonwebtoken": "^9.0.2", + "mariadb": "^3.2.3", "mongoose": "^5.12.3", "pg": "^8.7.1", "pg-hstore": "^2.3.4", diff --git a/backend/src/config/database.ts b/backend/src/config/database.ts index e861a0f..037315f 100644 --- a/backend/src/config/database.ts +++ b/backend/src/config/database.ts @@ -39,11 +39,6 @@ async function connect() { return false }) } - - if (env.NORK.database.db.length > 0) { - new Err(500, `unsupported database ${env.NORK.database.db}`) - return false - } } export default connect diff --git a/backend/src/config/environment.ts b/backend/src/config/environment.ts index 11d65c4..8351e74 100644 --- a/backend/src/config/environment.ts +++ b/backend/src/config/environment.ts @@ -2,6 +2,7 @@ import path from 'path' import fs from 'fs-extra' import { Err } from '../services/globalService' import dotenv from 'dotenv' +import { Dialect } from 'sequelize' const env_path = process.env.NODE_ENV ? `../.env.${process.env.NODE_ENV}` : '../.env' dotenv.config({ path: path.join(__dirname, env_path) }) @@ -43,9 +44,10 @@ export default { JWT_SECRET: String(process.env.JWT_SECRET), // MongoDB DB_URI: String(process.env.DB_URI), - // PostgreSQL + // Sequelize DB_PORT: Number(process.env.DB_PORT), DB_HOST: String(process.env.DB_HOST), + DB_DIALECT: process.env.DB_DIALECT as Dialect, DB_USERNAME: String(process.env.DB_USERNAME), DB_PASSWORD: String(process.env.DB_PASSWORD), DB_DATABASE: String(process.env.DB_DATABASE), diff --git a/backend/src/config/sequelize.config.ts b/backend/src/config/sequelize.config.ts index b2c05d9..0c85150 100644 --- a/backend/src/config/sequelize.config.ts +++ b/backend/src/config/sequelize.config.ts @@ -3,7 +3,7 @@ import env from './environment' const db = new Sequelize(env.DB_DATABASE, env.DB_USERNAME, env.DB_PASSWORD, { host: env.DB_HOST, - dialect: 'postgres', + dialect: env.DB_DIALECT, logging: false }) diff --git a/backend/src/logs/Err.global.log b/backend/src/logs/Err.global.log index 53c2fb9..e82ffeb 100644 --- a/backend/src/logs/Err.global.log +++ b/backend/src/logs/Err.global.log @@ -47,3 +47,28 @@ Date: "2023-07-01 18:30:40" Type: "Err" Code: "500" Message: "unsupported databa Date: "2023-07-01 18:31:01" Type: "Err" Code: "500" Message: "unsupported database mongodb" Date: "2023-07-01 18:31:26" Type: "Err" Code: "500" Message: "unsupported database mongodb" Date: "2023-07-01 18:32:01" Type: "Err" Code: "500" Message: "unsupported database mongodb" +Date: "2024-03-06 14:55:10" Type: "Err" Code: "500" Message: ".env file for environment does not exists" +Date: "2024-03-06 14:58:42" Type: "Err" Code: "500" Message: "JWT_SECRET is not set!" +Date: "2024-03-06 14:59:11" Type: "Err" Code: "500" Message: "unsupported database mongodb" +Date: "2024-03-06 14:59:41" Type: "Err" Code: "500" Message: "{"message":"connect ECONNREFUSED ::1:27017","reason":{"type":"Single","setName":null,"maxSetVersion":null,"maxElectionId":null,"servers":{},"stale":false,"compatible":true,"compatibilityError":null,"logicalSessionTimeoutMinutes":null,"heartbeatFrequencyMS":10000,"localThresholdMS":15,"commonWireVersion":null}}" +Date: "2024-03-06 15:12:22" Type: "Err" Code: "500" Message: "unsupported database mongodb" +Date: "2024-03-06 15:12:52" Type: "Err" Code: "500" Message: "{"message":"connect ECONNREFUSED ::1:27017","reason":{"type":"Single","setName":null,"maxSetVersion":null,"maxElectionId":null,"servers":{},"stale":false,"compatible":true,"compatibilityError":null,"logicalSessionTimeoutMinutes":null,"heartbeatFrequencyMS":10000,"localThresholdMS":15,"commonWireVersion":null}}" +Date: "2024-03-06 15:17:17" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 15:17:17" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:5432" +Date: "2024-03-06 15:45:46" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 15:45:46" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:5432" +Date: "2024-03-06 15:46:51" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 15:46:51" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:5432" +Date: "2024-03-06 16:08:39" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 16:08:39" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306" +Date: "2024-03-06 16:12:55" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 16:12:55" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionRefusedError: connect ECONNREFUSED 127.0.0.1:3306" +Date: "2024-03-06 16:13:40" Type: "Err" Code: "500" Message: "unsupported database mysql" +Date: "2024-03-06 16:13:40" Type: "Err" Code: "500" Message: "Can't connect to db +SequelizeConnectionError: (conn=3, no: 1049, SQLState: 42000) Unknown database 'deguapp'" +Date: "2024-03-06 16:15:55" Type: "Err" Code: "500" Message: "unsupported database mysql" diff --git a/backend/src/server.ts b/backend/src/server.ts index 7e0676e..26e3104 100644 --- a/backend/src/server.ts +++ b/backend/src/server.ts @@ -14,18 +14,5 @@ export function runServer(): void { }) } -// TODO: Fix this shit -//(async () => { -// if (!env.NORK.database) { -// runServer() -// } else { -// const db_connection = await database() -// if (db_connection) { -// runServer() -// } -// } -// -//})() -// runServer() const db_connection = database() diff --git a/docker-compose.yaml b/docker-compose.yaml index dfea154..ba95c98 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -5,7 +5,9 @@ services: image: mariadb restart: always environment: - MARIADB_ROOT_PASSWORD: 39In1bx7 + MARIADB_ROOT_PASSWORD: '39In1bx7' + ports: + - 3306:3306 volumes: - ./db_data:/var/lib/mysql