From 3f0f35c9ef82d099bc38ce2ccc31b27a61306c59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chriss=20Mej=C3=ADa?= Date: Sun, 23 Sep 2018 16:23:22 -0600 Subject: [PATCH] v0.1.1 --- README.md | 22 +++++++++++----------- package.json | 2 +- sources/tests/join.test.ts | 23 +++++++++++++++++++++++ tests/join.test.js | 22 ++++++++++++++++++++++ tests/join.test.js.map | 2 +- 5 files changed, 58 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 5529fe7..6f7acf4 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ usersTable.get({}).then((data: any) => { }); ``` -Query result: +Query executed: ```sql 'SELECT `users`.`id`, `users`.`created`, `users`.`username`, `users`.`email`, `users`.`first_name`, `users`.`last_name`, `users`.`admin`, `users`.`verified`, `users`.`active` FROM `users` LIMIT 1;' ``` @@ -79,7 +79,7 @@ usersTable.getSome({ }); ``` -Query result: +Query executed: ```sql 'SELECT `users`.`id`, `users`.`created`, `users`.`username`, `users`.`email`, `users`.`first_name`, `users`.`last_name`, `users`.`admin`, `users`.`verified`, `users`.`active` FROM `users` LIMIT 3;' ``` @@ -116,7 +116,7 @@ usersTable.getAll({ }); ``` -Query result: +Query executed: ```sql 'SELECT `users`.`id`, `users`.`created`, `users`.`username`, `users`.`email`, `users`.`first_name`, `users`.`last_name`, `users`.`admin`, `users`.`verified`, `users`.`active` FROM `users` WHERE `users`.`id` = 3;' ``` @@ -147,7 +147,7 @@ usersTable.insert({ }); ``` -Query result: +Query executed: ```sql 'INSERT INTO `users` (`firstName`) VALUES (?);' ``` @@ -170,7 +170,7 @@ usersTable.update({ }); ``` -Query result: +Query executed: ```sql 'UPDATE `users` SET `firstName` = "Chriss" WHERE `users`.`id` = 3;' ``` @@ -195,7 +195,7 @@ usersTable.delete({ }); ``` -Query result: +Query executed: ```sql 'DELETE FROM `users` WHERE `users`.`id` = 1;' ``` @@ -231,7 +231,7 @@ sessionsTable.join([{ }); ``` -Query result: +Query executed: ```sql SELECT `sessions`.`id`, `sessions`.`created`, `sessions`.`ip`, `sessions`.`user`, `users`.`username` AS `users__username`, `users`.`email` AS `users__email`, `users`.`firstName` AS `users__firstName`, `users`.`lastName` AS `users__lastName` FROM `sessions` LEFT JOIN `users` ON `sessions`.`user` = `users`.`id` WHERE `users`.`id` = 3; ``` @@ -263,7 +263,7 @@ sessionsTable.join([{ }); ``` -Query result: +Query executed: ```sql UPDATE `sessions` INNER JOIN `users` ON `sessions`.`user` = `users`.`id` SET `ip` = "121.0.0.1" WHERE `users`.`id` = 3; ``` @@ -288,7 +288,7 @@ sessionsTable.join([{ }); ``` -Query result: +Query executed: ```sql DELETE FROM `sessions` INNER JOIN `users` ON `sessions`.`user` = `users`.`id` WHERE `users`.`id` = 3; ``` @@ -316,9 +316,9 @@ sessionsTable.getAll({ }); ``` -Query result: +Query *prepared*: ```sql SELECT `users`.`id`, `users`.`created`, `users`.`username`, `users`.`email`, `users`.`firstName` AS `first_name`, `users`.`lastName` AS `last_name`, `users`.`admin`, `users`.`verified`, `users`.`active` FROM `users` WHERE (`users`.`id` = ?) OR (`users`.`username` = 'chriss'); ``` -This can be helpful in some scenarios but is *not recomended*, only use it if you know what are you doing and *never*, send a parameter unprepared, you will expose your system to sql injection. \ No newline at end of file +This can be helpful in some scenarios but is **not recomended**, only use it if you know what are you doing and **never**, send a parameter unprepared, you will expose your system to sql injection. \ No newline at end of file diff --git a/package.json b/package.json index c2457d7..1e254df 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@unicoderns/orm", - "version": "0.1.0", + "version": "0.1.1", "description": "Unicoderns Object/Relational Mapping", "author": { "name": "Unicoderns SA", diff --git a/sources/tests/join.test.ts b/sources/tests/join.test.ts index aaf40a1..b31dbe7 100644 --- a/sources/tests/join.test.ts +++ b/sources/tests/join.test.ts @@ -186,4 +186,27 @@ describe('Joins', () => { }); }); */ + + /* + it('INNER join update usersTwo with literal from users', () => { + var expected = { + sql: 'SELECT `sessions`.`id`, `sessions`.`created`, `sessions`.`ip`, `sessions`.`user`, `users`.`username` AS `users__username`, `users`.`email` AS `users__email`, `users`.`firstName` AS `users__firstName`, `users`.`lastName` AS `users__lastName` FROM `sessions` LEFT JOIN `users` ON `sessions`.`user` = `users`.`id` WHERE `users`.`id` = ?;', + values: [3] + }; + usersTwoTable.returnQuery().join([{ + keyField: usersTwoTable.user, + fields: ["username"], + kind: "INNER" + }]).update({ + data: { + username: "users__username" + }, + where: "*" + }).then((query: Models.Query) => { + expect(query).toEqual(expected); + }).catch((err: any) => { + console.error(err) + }); + }); + */ }); \ No newline at end of file diff --git a/tests/join.test.js b/tests/join.test.js index 563204b..c70d87d 100644 --- a/tests/join.test.js +++ b/tests/join.test.js @@ -180,5 +180,27 @@ describe('Joins', () => { }); }); */ + /* + it('INNER join update usersTwo with literal from users', () => { + var expected = { + sql: 'SELECT `sessions`.`id`, `sessions`.`created`, `sessions`.`ip`, `sessions`.`user`, `users`.`username` AS `users__username`, `users`.`email` AS `users__email`, `users`.`firstName` AS `users__firstName`, `users`.`lastName` AS `users__lastName` FROM `sessions` LEFT JOIN `users` ON `sessions`.`user` = `users`.`id` WHERE `users`.`id` = ?;', + values: [3] + }; + usersTwoTable.returnQuery().join([{ + keyField: usersTwoTable.user, + fields: ["username"], + kind: "INNER" + }]).update({ + data: { + username: "users__username" + }, + where: "*" + }).then((query: Models.Query) => { + expect(query).toEqual(expected); + }).catch((err: any) => { + console.error(err) + }); + }); + */ }); //# sourceMappingURL=join.test.js.map \ No newline at end of file diff --git a/tests/join.test.js.map b/tests/join.test.js.map index f5f1f36..7292ad9 100644 --- a/tests/join.test.js.map +++ b/tests/join.test.js.map @@ -1 +1 @@ -{"version":3,"file":"join.test.js","sourceRoot":"","sources":["../sources/tests/join.test.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;AAC5F,4FAA4F;;;;;;;;;AAE5F,gEAAkD;AAClD,gEAAkD;AAElD,8CAAkC;AAIlC;;GAEG;AACH,IAAI,EAAE,GAAG,IAAI,eAAE,CAAC;IACZ,GAAG,EAAE,IAAI;IACT,UAAU,EACV;QACI,MAAM,EAAE,SAAS;QACjB,UAAU,EAAE,UAAU;QACtB,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,WAAW;QACnB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE;YACX,QAAQ,EAAE,IAAI;SACjB;KACJ;CACJ,CAAC,CAAC;AAEH,IAAI,aAAgC,CAAC;AACrC,IAAI,aAAgC,CAAC;AAErC,SAAS,CAAC,IAAI,CAAC,EAAE;IACb,aAAa,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,aAAa,GAAG,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1C,IAAI,EAAE,CAAC;AACX,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACnB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACpD,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,2JAA2J;YAChK,MAAM,EAAE,EAAE;SACb,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,IAAI,EAAE,MAAM;aACf,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrC,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,yTAAyT;YAC9T,MAAM,EAAE,EAAE;SACb,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;gBACtD,IAAI,EAAE,MAAM;aACf,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtC,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,sOAAsO;YAC3O,MAAM,EAAE,EAAE;SACb,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,CAAC;gBAC7B,IAAI,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YACxC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAC9C,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,gVAAgV;YACrV,MAAM,EAAE,CAAC,CAAC,CAAC;SACd,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,CAAC;gBACtD,IAAI,EAAE,MAAM;aACf,CAAC,CAAC,CAAC,MAAM,CAAC;YACP,KAAK,EAAE;gBACH,WAAW,EAAE,CAAC;aACjB;SACJ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,+GAA+G;YACpH,MAAM,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SAC3B,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,IAAI,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE;gBACF,EAAE,EAAE,WAAW;aAClB;YACD,KAAK,EAAE;gBACH,WAAW,EAAE,CAAC;aACjB;SACJ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC7C,IAAI,QAAQ,GAAG;YACX,GAAG,EAAE,uGAAuG;YAC5G,MAAM,EAAE,CAAC,CAAC,CAAC;SACd,CAAC;QACF,aAAa,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9B,QAAQ,EAAE,aAAa,CAAC,IAAI;gBAC5B,IAAI,EAAE,OAAO;aAChB,CAAC,CAAC,CAAC,MAAM,CAAC;YACP,WAAW,EAAE,CAAC;SACjB,CAAC,CAAC,IAAI,CAAC,CAAC,KAAmB,EAAE,EAAE;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;YAClB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACtB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH;;;;;;;;;;;;;;;;;;;;;MAqBE;AACN,CAAC,CAAC,CAAC"} \ No newline at end of file +{"version":3,"file":"join.test.js","sourceRoot":"","sources":["../sources/tests/join.test.ts"],"names":[],"mappings":"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"} \ No newline at end of file