Explorar el Código

add mysql specific config for timezone

Pouria Ezzati hace 1 año
padre
commit
84bdf88f08
Se han modificado 3 ficheros con 17 adiciones y 6 borrados
  1. 5 1
      knexfile.js
  2. 9 2
      server/knex.js
  3. 3 3
      server/utils/utils.js

+ 5 - 1
knexfile.js

@@ -1,9 +1,13 @@
 const env = require("./server/env");
 
+const isSqlite = env.DB_CLIENT === "sqlite3" || env.DB_CLIENT === "better-sqlite3";
+const isMySQL = env.DB_CLIENT === "mysql" || env.DB_CLIENT === "mysql2";
+
 module.exports = {
   client: env.DB_CLIENT,
   connection: {
-    filename: "db/" + env.DB_FILENAME,
+    ...(isSqlite && { filename: "db/" + env.DB_FILENAME }),
+    ...(isMySQL && { dateStrings: true, timezone: "Z" }),
     host: env.DB_HOST,
     database: env.DB_NAME,
     user: env.DB_USER,

+ 9 - 2
server/knex.js

@@ -2,10 +2,15 @@ const knex = require("knex");
 
 const env = require("./env");
 
+const isSqlite = env.DB_CLIENT === "sqlite3" || env.DB_CLIENT === "better-sqlite3";
+const isPostgres = env.DB_CLIENT === "pg" || env.DB_CLIENT === "pg-native";
+const isMySQL = env.DB_CLIENT === "mysql" || env.DB_CLIENT === "mysql2";
+
 const db = knex({
   client: env.DB_CLIENT,
   connection: {
-    filename: "db/" + env.DB_FILENAME,
+    ...(isSqlite && { filename: "db/" + env.DB_FILENAME }),
+    ...(isMySQL && { dateStrings: true, timezone: "Z" }),
     host: env.DB_HOST,
     port: env.DB_PORT,
     database: env.DB_NAME,
@@ -20,6 +25,8 @@ const db = knex({
   useNullAsDefault: true,
 });
 
-db.isSqlite3 = db.client.driverName === "sqlite3" || db.client.driverName === "better-sqlite3";
+db.isPostgres = isPostgres;
+db.isSqlite = isSqlite;
+db.isMySQL = isMySQL;
 
 module.exports = db;

+ 3 - 3
server/utils/utils.js

@@ -128,9 +128,9 @@ function parseTimestamps(item) {
 
 function dateToUTC(date) {
   const dateUTC = date instanceof Date ? date.toISOString() : new Date(date).toISOString();
-  
-  // sqlite needs iso 8601 string in utc
-  if (knex.isSqlite3) {
+
+  // databases other than postgres need the date to be formatted in 'YYYY-MM-DD hh:mm:ss'
+  if (!knex.isPostgres) {
     return dateUTC.substring(0, 10) + " " + dateUTC.substring(11, 19);
   };