{"_id":"@aio-server/database","_rev":"4-a5047851d5b44bbe84a1bcd6f76b6edf","name":"@aio-server/database","dist-tags":{"latest":"1.0.0"},"versions":{"0.0.1":{"name":"@aio-server/database","homepage":"https://www.npmjs.com/org/aio-server","version":"0.0.1","description":"This package is a module of [@aio-server/core](https://www.npmjs.com/package/@aio-server/core).","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","dependencies":{"better-sqlite3":"^7.4.5","mysql2":"^2.3.3","typeorm":"^0.2.41"},"_id":"@aio-server/database@0.0.1","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-YopSEh/SG6NbeKoXYUIdvmC+Bn6+9jQ3aaTZ7MoqjGE98BxvZR5f9MX3/nGQGxacG2nXBZsbm1NyNtYZqr2szg==","shasum":"fae0968b6e9574fdea8cbc9de12eba30c609270b","tarball":"https://registry.npmjs.org/@aio-server/database/-/database-0.0.1.tgz","fileCount":12,"unpackedSize":10914,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhy9noCRA9TVsSAnZWagAAgNAP/ijKPLtIM1Ao1MwC+gLv\nX9AEQ372WptiTYMED9Gn2vX2qsChlXr4lvwv+ppMa57ENte6pPexLo+mWtZ2\nq2KG78CyIiw1ahYrnEiXlOJzfKuyKQnYo031/NrcwbsWmOBHmQt8+7rDR5AL\n2NBltsIcVznb4FZyYbq45hNI95Vm6Ko0TzeTxcMKE9qBOS5q6BgVyrA4/YgG\nNrEo1Mx8mBgEfMtX4pscl9pMuJNx5/aYRSutmjAT3eBp0YltszLN7jZQd4M5\nvoRyAbTiS7saPbVuYxHwbuVNx1mCv9V/UpUtoffE65xVuM4r+VHZ9aXteDkm\nZghDhJYNnypo13jXP7odRFr0sBTDBZMOyM+YgXmMjA9xiCPjbnq8GmztlUwy\nVHOlXy3mDwBip1Y9SQbr7QKZgfosBVhaHc7dLi5d2jAe06Q0ZXmR8V2/v7lK\nS1Conix4iUIYT/8f0H/DnGgvBdayVnu8FKJMw2tEtX8yAmfnMbJGzn6qXGv6\n/AFPoUM5VO+o75JJS1Y8C6sy0VYUKKUiaXhZmg8Qm/OZ08HF8YrIbJE143D/\n6Jm0H17aNnRsl6UpAdMy3ZOhU81LAy1hEp/M2lmeNdfLkqaRJV5Aknfa2sLR\nd10ZSPX/98ouTbn0nvHLjsi9ihwwTDz+LvJSN5z0bAhdioOMVrBXgGPMoryb\n3elb\r\n=YSSx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBaeC6UgdmgwjgqFYL81ohy0IvYMGBz5eA7QdIJWBbOlAiEArlSeUomeWKVu2gahW6fbYq4HetNL2pzhXhy0LBau7CE="}]},"_npmUser":{"name":"shinerzoch","email":"shinerzoch@gmail.com"},"directories":{},"maintainers":[{"name":"shinerzoch","email":"shinerzoch@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/database_0.0.1_1640749544430_0.2751384061628863"},"_hasShrinkwrap":false},"0.0.10001":{"name":"@aio-server/database","homepage":"https://www.npmjs.com/org/aio-server","version":"0.0.10001","description":"This is a database module for @aio-server","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","dependencies":{"better-sqlite3":"^7.4.5","mysql2":"^2.3.3","typeorm":"^0.2.41"},"_id":"@aio-server/database@0.0.10001","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-u/KUUeYvaba5dyYXVvQMDZfZp3X955jzBIp44NCTNOaX4Z+Fbj4uFHESaTFj3gK8UAFA/zG9Oev3QEMlpcpPUA==","shasum":"235e4982e19b0abf945d82ee1c977267e88ac38a","tarball":"https://registry.npmjs.org/@aio-server/database/-/database-0.0.10001.tgz","fileCount":12,"unpackedSize":10959,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhy9v3CRA9TVsSAnZWagAAi64P/17+S7HQZP4MBc0KCy/1\nEP9A4uP/oFAG3CjnXAZU6dmMgquApRo1rwPX2PCj4vr3+MRb/tFPs1eKH8Fe\nXN7JhC75nCeWuE3bkhc2QREHeRumV8DzzJnDM+tX8NeEJ1u+r0qlt8bt870X\nAOSsKF1ZH2QY4ht8KSubfG9WzIiPOsme00aKKwM3KsIuMPzHdCatvKal4LNS\n6qleb7VCo78VrSlZKon96nJcXbAY9luWJQTOG/0huVB9X5PEh5bqr9JYfExW\nE9BSVQ7QjRzIXtRDJrvYC/a6BR0OUIyqaQO15560FhYpECEyvXd5HElzLX27\nN8rkPO4LKwntx7t0MIgQglq06F/9j81efJZslBGVskdqdnfzYPjoFcb/JV4f\nf2ezyN/+9qf290dQzdl+RtXEZtiVsGsNxtv3cWUnTbRDVbTh7r0Q+4OBsVhf\nKUajO18wXZkaPy5rFzVAgr9AMCFQPa5tneGmGU4OvjYriAkpzNKKFpRJ73LE\neAIoZdppMZZOxpG5uAf8hGfGhoiD3L3nZzBcLKUlValIRjbx6lJDevgg0A0P\n6uDRimLwZm8WjY6NIpmhrjXsVqa5WC5nME1JW0G5qXprZAeCSB4rEBf51Z+7\n0iShLgQ57UCxkUm5wWHJC+CiHJZ/cfu2a7wuQivUBYmWaGr6MSgAhpIlMMhG\n9JoH\r\n=QETQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDVGNjPDbSenXOEevxlxnFuW+XsTba0egOZoH5oUkuGsgIgGj5rNrHyy4LnvzEB/BxlAAgMK6MnPw+RFPLQT+38wj4="}]},"_npmUser":{"name":"shinerzoch","email":"shinerzoch@gmail.com"},"directories":{},"maintainers":[{"name":"shinerzoch","email":"shinerzoch@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/database_0.0.10001_1640750071544_0.0005660055205909398"},"_hasShrinkwrap":false},"0.0.10002":{"name":"@aio-server/database","homepage":"https://www.npmjs.com/org/aio-server","version":"0.0.10002","description":"This is a database module for @aio-server","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","dependencies":{"better-sqlite3":"^7.4.5","mysql2":"^2.3.3","typeorm":"^0.2.41"},"_id":"@aio-server/database@0.0.10002","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-2IiKYxa2RHfMQBjhvq66oj60W/ytCshyeQYSyOIeWRqqmKMAzzjZryo6zDbS9Hlm01tPOvKljU4gHJrOlbfJBA==","shasum":"4de150589e0ef2f5c427b4d587779a0543acc624","tarball":"https://registry.npmjs.org/@aio-server/database/-/database-0.0.10002.tgz","fileCount":12,"unpackedSize":18612,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhy/LMCRA9TVsSAnZWagAA1zUP/3yRixnNxUuN75uUiXeB\nmbUQ1LnnOynvHbdF+TCm5jZRBtjacD65WXXO5dc/gJy32MiVrjqdzYXXpfLE\nl1xqW1/hntCv0j/HMhFk8xm/amhI6RhbzsJ2pqSe5pBbQ8IXkykmwccBp3u9\n17iVIduQOwOIcpcL59q/ZmHSaaYFv4gTgzPLcZ5wcmcz5JtlCdsZyJ0xCVeU\nazKUW5BIQvqiSEmJzNU9pEgshypgA/XEs0Y+K77zQcAW/cSKEKCbmiFAUgny\nDSru6TaLNkn3otnyBNYzgBQXiuSWLCFwA2yCexNgS8oYez8zCmSlggROVbov\nt13oWruKPvd7WThTWRRXJlMa+nuZ3EaWPcX1aukLaaulw8rcUSU1U4yEnfOL\nF/HMDC8qOlZuWPO5gCoRdJiJgCnHzpraKYObYvoWY8myl69LE4gwBAoD8Yy6\nAwePEbOb+9SWE3EI+SdBl/ap9AWBCbtoUZtzhBXYkHJ1MH22BcPJNpUkwMTb\n3yggM3dXo06Akl+ujf3YlGDnFbRHYUiA5QY+hBtt44Tv6GrrODSdkYuR+WKg\nwN0ODALiSvPsXMyU/bq/xvdMxIDGpTcksrqr9R/8YYl5jMhz11o8nqSdqszd\ntyMI7C5mUdN66kgDcnEANM6uEDv/DR3HutGSVU+zwS+ev6+kHHMSKu8tVE1t\nLjTw\r\n=pO5n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+OSYugOb94lnTz2BWlbOYmr9TbSKh2695B943toLJcAiAXEKdqTABI8HU0llhUZ4XBOVLUMcU18Nqyk1aAphxkLg=="}]},"_npmUser":{"name":"shinerzoch","email":"shinerzoch@gmail.com"},"directories":{},"maintainers":[{"name":"shinerzoch","email":"shinerzoch@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/database_0.0.10002_1640755916189_0.8372482399811108"},"_hasShrinkwrap":false},"1.0.0":{"name":"@aio-server/database","homepage":"https://www.npmjs.com/org/aio-server","version":"1.0.0","description":"This is a database module for @aio-server","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","dependencies":{"better-sqlite3":"^7.4.5","mysql2":"^2.3.3","typeorm":"^0.2.41"},"_id":"@aio-server/database@1.0.0","_nodeVersion":"16.13.0","_npmVersion":"8.1.4","dist":{"integrity":"sha512-WyzJxYtlV1qaq4GxqSfmbyiX5pk1mBDOwMWM+DiK9sBhvcjgnDibVcrbWHaSALiLWcM83cIfHzx7dSS/4IfcQA==","shasum":"25b32591b7ea97e6b802fbfcef1cf9d52a5df46a","tarball":"https://registry.npmjs.org/@aio-server/database/-/database-1.0.0.tgz","fileCount":12,"unpackedSize":18452,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhzCSrCRA9TVsSAnZWagAAhbMP/1kgBNYnsgJZOQb3zk0z\nWCNq17RuXSY9GpjvmzOzvI0U1ugd5apq5XjSs/7CNfks0r5722VoZWcZ7iXI\nyRBzNLMKvLvoOiFnXTe7AsWlD6tFJEc02i5rI08I+kmELmkaNjUdA+smVYrR\nmoLjllNp2DGMeGjc9JHYUiqL7M66uYSgkw+utm3/HiB4iB+fzC4tvhUPVGws\nkGdKol4muKkiuld4sFPINRVNtZGkXsIzlZvP3adqzyNEPkgz1662/0fS8iwQ\n7X2uT7WZI7nwqjtnKrLwJSwaDFlMfU7NX7gNCW7gCkFUk0Jh1/d5ZqcQt/oK\nrpORUMQrwZiQxHHaMjI2/ikdAj275BAPFe6BfH16/8KqIFyRf9G5Rugi6gPo\ndo9PGVkoav8c1Nnd127eLP/z2vrNiIVVeX0LCgjUJ5nL38IB3Hd0AjTPaivO\nI5OVfsnNMRZsEQvfDElKrv7vqWG7to3rfxFTac2pF0nAS2Qps41hF2AOQ5h1\nqe0sSAHbWrP8dPiFo9AMHp2qdbbijCc+hMSQKqt3/2AqTaeiopDgX4JF/OIf\nuDMi/t+wm6YGU8OU562ixN3vKvPKKYguWujX887tCvYL15nkZHQaLXhDscZu\nA836sDxdcy5EGFoUskUEf+U/KkS2a8sZj9IBQFB45cBA4WbqKjSpACQylUSS\nxuZz\r\n=i9KZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD7L4/sIMkifkb/btiGjUZ9bGG6qC1jun6RpVaf4peiDAIhAPYa+Qzuq3wYTyXZzQft63jMFzFEBLOxlsq76ApETUqt"}]},"_npmUser":{"name":"shinerzoch","email":"shinerzoch@gmail.com"},"directories":{},"maintainers":[{"name":"shinerzoch","email":"shinerzoch@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/database_1.0.0_1640768683310_0.41927461364071617"},"_hasShrinkwrap":false}},"time":{"created":"2021-12-29T03:45:44.388Z","0.0.1":"2021-12-29T03:45:44.581Z","modified":"2022-04-04T12:20:15.347Z","0.0.10001":"2021-12-29T03:54:31.672Z","0.0.10002":"2021-12-29T05:31:56.584Z","1.0.0":"2021-12-29T09:04:43.452Z"},"maintainers":[{"name":"shinerzoch","email":"shinerzoch@gmail.com"}],"description":"This is a database module for @aio-server","homepage":"https://www.npmjs.com/org/aio-server","license":"ISC","readme":"# [@aio-server](https://www.npmjs.com/org/aio-server) - Database Module\r\n\r\n> This package is a module of [@aio-server/core](https://www.npmjs.com/package/@aio-server/core). Please make sure you read its documents before you try to use this module. If you are not familiar with our core package please go back and read about it.\r\n\r\n## Getting Started\r\n\r\nThis module is made so you can make database connections and tables easier without needing a client to set everything up. Our tables are file based. You will learn about that later. Make sure the first thing you do is add the package to your app by using `npm i @aio-server/database`.\r\n\r\nAfter you have downloaded and added the package to your app. You can now add it to your project.\r\n\r\n```js\r\n// import the core, required for all modules.\r\nconst server = require(\"@aio-server/core\");\r\n\r\n// import the module.\r\nconst Database = require(\"@aio-server/database\");\r\n\r\n(async () => {\r\n    // install the module.\r\n    server.install(Database, {\r\n        default: true,\r\n        type: \"local\"\r\n    });\r\n\r\n    // test the database.\r\n    console.log(server.get(\"database\").get(\"default\").table(\"users\").find());\r\n    console.log(server.db.table(\"users\").find()); // only works with a default database.\r\n\r\n    // start the server.\r\n    server.start({ port: 8080 });\r\n})();\r\n```\r\n\r\n---\r\n\r\n## Table of Contents\r\n\r\n- [**Create Instance**](#create-instance)\r\n\r\n[`Local`](#local)\r\n[`MySQL`](#mysql)\r\n\r\n- [**Functions**](#functions)\r\n\r\n[`Find One`](#find-one)\r\n[`Find Many`](#find-many)\r\n[`Find and Count`](#find-and-count)\r\n[`Create`](#create)\r\n[`Update`](#update)\r\n[`Delete`](#delete)\r\n[`Count`](#count)\r\n[`Query`](#query)\r\n[`Clear`](#clear)\r\n\r\n[`Get Database Instance`](#get-database-instance)\r\n[`Get Database Table`](#get-database-table)\r\n\r\n---\r\n\r\n### Create Instance\r\n\r\nOur databases are instance based so that you can make more then one database connection without having to take extra steps. Its super easy to create a database instance. Check out below to see how to make different instances that we support.\r\n\r\n#### MySQL\r\n\r\nRequired Options\r\n\r\n- **type**: STRING - `This tells the server which type of database you want to use.`\r\n- **host**: STRING - `The host of the database.`\r\n- **username**: STRING - `The username of the database.`\r\n- **password**: STRING - `The password of the database.`\r\n- **database**: STRING - `The name of the database.`\r\n\r\nOptional Options\r\n\r\n- **modelsPath**: STRING - `The path you have your models in. Only use this if you are using more then one database in your project.`\r\n- **instanceName**: STRING - `The name of the instance. What you would use to get the database connection. Only used this is you are using more then one database in your project.`\r\n- **default**: BOOLEAN - `To tell the server that its the default database to use. This makes a shortcut to server.db. Make sure you set this on your main database connection.`\r\n\r\nDefault Database Example\r\n\r\n```js\r\nawait server.install(server.modules.get(\"database\"), {\r\n    default: true,\r\n    type: \"mysql\",\r\n    host: \"localhost\",\r\n    username: \"test\",\r\n    password: \"test\",\r\n    database: \"test\"\r\n});\r\n```\r\n\r\nMore Then One Database Example\r\n\r\n```js\r\nawait server.install(server.modules.get(\"database\"), {\r\n    default: true,\r\n    type: \"mysql\",\r\n    host: \"localhost\",\r\n    username: \"test\",\r\n    password: \"test\",\r\n    database: \"test\"\r\n});\r\n\r\nawait server.install(server.modules.get(\"database\"), {\r\n    type: \"mysql\",\r\n    host: \"localhost\",\r\n    username: \"test\",\r\n    password: \"test\",\r\n    database: \"testing\"\r\n    instanceName: \"local-database\",\r\n    modelsPath: \"local-models\"\r\n});\r\n```\r\n\r\n---\r\n\r\n#### Local\r\n\r\nRequired Options\r\n\r\n- **type**: STRING - `This tells the server which type of database you want to use.`\r\n\r\nOptional Options\r\n\r\n- **modelsPath**: STRING - `The path you have your models in. Only use this if you are using more then one database in your project.`\r\n- **instanceName**: STRING - `The name of the instance. What you would use to get the database connection. Only used this is you are using more then one database in your project.`\r\n- **default**: BOOLEAN - `To tell the server that its the default database to use. This makes a shortcut to server.db. Make sure you set this on your main database connection.`\r\n\r\nDefault Database Example\r\n\r\n```js\r\nawait server.install(server.modules.get(\"database\"), {\r\n    default: true,\r\n    type: \"local\"\r\n});\r\n```\r\n\r\nMore Then One Database Example\r\n\r\n```js\r\nawait server.install(server.modules.get(\"database\"), {\r\n    default: true,\r\n    type: \"local\"\r\n});\r\n\r\nawait server.install(server.modules.get(\"database\"), {\r\n    type: \"local\",\r\n    instanceName: \"local-database\",\r\n    modelsPath: \"local-models\"\r\n});\r\n```\r\n\r\n---\r\n\r\n### Functions\r\n\r\n> As of right now we are using a package called [TypeORM](https://typeorm.io/). You can read up on their documentation for [Repository API](https://typeorm.io/#/repository-api). Its what we use for our databases. We plan on creating our own package in the future to remove the need to have TypeORM as a dependency.\r\n\r\nFunctions are what you would use to interact with the database.\r\n\r\n[`Find One`](#find-one)\r\n[`Find Many`](#find-many)\r\n[`Find and Count`](#find-and-count)\r\n[`Create`](#create)\r\n[`Update`](#update)\r\n[`Delete`](#delete)\r\n[`Count`](#count)\r\n[`Query`](#query)\r\n[`Clear`](#clear)\r\n\r\n[`Get Database Instance`](#get-database-instance)\r\n[`Get Database Table`](#get-database-table)\r\n\r\n#### Find One\r\n\r\nFinds first entity that matches some id or find options.\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").findOne(1);\r\nconst user2 = await server.db.table(\"users\").findOne({ username: \"test\" });\r\n```\r\n\r\n#### Find Many\r\n\r\nFinds entities that match given options.\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").find({ age: 21 });\r\nconst user2 = await server.db.table(\"users\").find({ age: 21, country: \"usa\" });\r\n```\r\n\r\n#### Find and Count\r\n\r\nFinds entities that match given find options. Also counts all entities that match given conditions, but ignores pagination settings (`skip` and `take` options).\r\n\r\n```js\r\nconst [users, usersCount] = await server.db.table(\"users\").findAndCount({ age: 21 });\r\n```\r\n\r\n#### Create\r\n\r\nAccepts an object literal with your table properties which will be written into a newly created table object.\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").create({ username: \"test\", age: 21 });\r\n```\r\n\r\n#### Update\r\n\r\nPartially updates entity by a given update options or entity id.\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").update({ username: \"test\" }, { age: 18 });\r\nconst user2 = await server.db.table(\"users\").update(1, { age: 18 });\r\n```\r\n\r\n#### Delete\r\n\r\nDeletes entities by entity id, ids or given conditions:\r\n\r\n```js\r\nawait server.db.table(\"users\").delete(1);\r\nawait server.db.table(\"users\").delete([1, 2, 3]);\r\nawait server.db.table(\"users\").delete({ username: \"test\" });\r\n```\r\n\r\n#### Count\r\n\r\nCounts entities that match given options. Useful for pagination.\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").count({ age: 21 });\r\n```\r\n\r\n#### Query\r\n\r\nExecutes a raw SQL query. May not be supported for every database type.\r\n\r\n```js\r\nconst users = await server.db.table(\"users\").query(`SELECT * FROM USERS`);\r\n```\r\n\r\n#### Clear\r\n\r\nClears all the data from the given table (truncates/drops it).\r\n\r\n```js\r\nconst user1 = await server.db.table(\"users\").clear();\r\n```\r\n\r\n#### Get Database Instance\r\n\r\nGet the instance of a database.\r\n\r\n```js\r\nconst db = await server.modules.get(\"database\").get(\"default\");\r\n```\r\n\r\n#### Get Database Table\r\n\r\nGet a table from the database so you can edit it.\r\n\r\n```js\r\nconst table = await server.modules.get(\"database\").get(\"default\").table(\"users\");\r\n```","readmeFilename":"readme.md"}