Selaa lähdekoodia

fetch rows again upon insert if it's mysql

Pouria Ezzati 1 vuosi sitten
vanhempi
säilyke
709d769f8e

+ 2 - 2
server/queries/domain.queries.js

@@ -45,8 +45,8 @@ async function add(params) {
     });
   } else {
     // Mysql and sqlite don't support returning but return the inserted id by default
-    const [createdDomain] = await knex("domains").insert(newDomain).returning("id");
-    id = createdDomain.id;
+    const [createdDomain] = await knex("domains").insert(newDomain, "*");
+    id = typeof createdDomain === "number" ? createdDomain : createdDomain.id;
   }
 
   // Query domain instead of using returning as sqlite and mysql don't support it

+ 2 - 2
server/queries/host.queries.js

@@ -41,8 +41,8 @@ async function add(params) {
     });
   } else {
     // Mysql and sqlite don't support returning but return the inserted id by default
-    const [createdHost] = await knex("hosts").insert(newHost).returning("id");
-    id = createdHost.id;
+    const [createdHost] = await knex("hosts").insert(newHost, "*");
+    id = typeof createdHost === "number" ? createdHost : createdHost.id;
   }
 
   // Query domain instead of using returning as sqlite and mysql don't support it

+ 8 - 2
server/queries/link.queries.js

@@ -200,7 +200,7 @@ async function create(params) {
     encryptedPassword = await bcrypt.hash(params.password, salt);
   }
   
-  const [link] = await knex(
+  let [link] = await knex(
     "links"
   ).insert(
     {
@@ -214,7 +214,13 @@ async function create(params) {
     },
     "*"
   );
-  
+
+  // mysql doesn't return the whole link, but rather the id number only
+  // so we need to fetch the link ourselves
+  if (typeof link === "number") {
+    link = await knex("links").where("id", link).first();
+  }
+
   return link;
 }
 

+ 7 - 1
server/queries/user.queries.js

@@ -212,7 +212,7 @@ async function totalAdmin(match, params) {
 }
 
 async function create(params) {
-  const [user] = await knex("users").insert({
+  let [user] = await knex("users").insert({
     email: params.email,
     password: params.password,
     role: params.role ?? ROLES.USER,
@@ -220,6 +220,12 @@ async function create(params) {
     banned: params.banned ?? false,
   }, "*");
 
+  // mysql doesn't return the whole user, but rather the id number only
+  // so we need to fetch the user ourselves
+  if (typeof user === "number") {
+    user = await knex("users").where("id", user).first();
+  }
+
   return user;
 }