{"_id":"graphql-migrations","_rev":"82-6227ca55d5b28c883810762f4966fbee","name":"graphql-migrations","dist-tags":{"latest":"1.1.2","dev":"0.10.0-dev4","next":"1.1.0-alpha2"},"versions":{"0.0.1":{"name":"graphql-migrations","version":"0.0.1","description":"GraphQL database migrations package","main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"author":"","license":"ISC","_id":"graphql-migrations@0.0.1","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"wtrocki","email":"wtrocki@redhat.com"},"dist":{"integrity":"sha512-HD1Qbuiqj+wAPA0zxOGbV960mmtXyWTQFy1iv56ozxA20KkZmttGoQRwNS9NjX3AkBRhalX3Reh1CIOr3mb5RA==","shasum":"7d9390e1447e97d75c1a55c5dd76d09a2a31f9a1","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.0.1.tgz","fileCount":1,"unpackedSize":249,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJdzAbVCRA9TVsSAnZWagAAtG4P/irtwManrai55aWG6OR5\n7v2arLAvjvZm8gLoK+ul+qUytFIkiIQk6nV7Drt0za23F6CQEoz85zi23bp2\nHVHXPO0Hp7KW3MGu1gqThAR81O0Nb1r9H5P7vv99UL/353iRd7E+5oXdUHIc\nwwOHjn5s3vzanwtgGrBKNrpYj68FtHcWnnFgr2LgPgiiMD5AhDqMFbWd7T5L\nHu9wPXXxrkcPDP6jz+mC1094fQYe3EqZRuAqrveJvA4CVkhn3RK6xgUh/HYA\npuenEHt591ohwVhyat87u2jhq+uk/ZudHu1MfdDqNECbN3AFR73RP7h44N6l\n93rSQ3s9UMNaqg8M432rJBgpuKsa1bFAU4uNVBc4pP3Y9NptVhZL/xAU0SUo\nUhZKAlJV3y0fR+R1T/1UbBGEtH73kCUphDhSOWXP7HzhbAg3h4j5qLdC0OnC\nPrUFgP59JsGpBQal5/C93NhGZKT+jn46FTbPj6F/Q8/BU5qECBV1XSDVb46h\nUsu+c1qg1VY/419IytRfZfWU07Y18txVbg4QtEpru7cjLj4EGfc2U/B2vUB4\nGf0giLoU8eIRV0k/hWScyAR+g9/Jy4Gx16lq/g5swQ7IIeJsFmB9yE3+8Gpf\nBkn4xOR14geak6C2fg+c5gzcF3AXYlGLivG8AcH8/q5q5YrWJAqX5jV+TTDF\nBETW\r\n=iJqN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF297JohuBrEJ7jy0yvKtH+CmJMP0PMeWt+etvuvegaSAiEAvCMVkAdTNTV4vjNJ7VoFIaG6F7gVFxZ//IfMLu0Lyw0="}]},"maintainers":[{"name":"wtrocki","email":"wtrocki@redhat.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.0.1_1573652181075_0.9321690687366617"},"_hasShrinkwrap":false},"0.1.0-dev2":{"name":"graphql-migrations","version":"0.1.0-dev2","description":"Graphback database migrations","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"dependencies":{"chalk":"2.4.2","@graphback/core":"^0.10.0-dev2","@graphql-inspector/core":"1.26.0","glob":"7.1.6","knex":"0.20.2","pino":"5.13.6","sqlite3":"4.1.0","pg":"7.12.1","node-emoji":"1.10.0"},"devDependencies":{"@types/chalk":"0.4.31","@types/graphql":"14.2.3","@types/node":"12.12.9","ava":"2.4.0","graphql":"^14.5.8","rimraf":"3.0.0","ts-node":"8.5.2","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.2"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w ","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"engines":{"node":">=10.15.3"},"author":{"name":"ephelan@redhat.com"},"license":"Apache-2.0","publishConfig":{"access":"public"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"_id":"graphql-migrations@0.1.0-dev2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"wtrocki","email":"wtrocki@redhat.com"},"dist":{"integrity":"sha512-gwKJ7qW5usEKcygDFwQalLdeb7gXxQzuiZ+KYpF1HlGa/C5zKoynwMBVFOYU+AozlEYS1C4doz7u3z4jRdrbug==","shasum":"30e317e1902e230a870f47d6e5e4ee7c53650c95","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.1.0-dev2.tgz","fileCount":111,"unpackedSize":122891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd07vmCRA9TVsSAnZWagAA8fAP+gJyd28LhoEj17HYWTL1\nvk+4DpEIyOPdaCIJfkTfyvHntnC87Vy7uNl6UNZy/tKcNYBP0G9dVN/eMuQA\nxyNfOH5uzp42GGxMQDmNDrN+MwcAosfz4dwjqVp9BN+2Cyr9i+WkMs40+jm+\nKSSINGtMRmVf2v7Rilua0dM9HXmKjJ8XBVcANb/0iqhVYrRx6frkugOYFrVx\npmLnOzbpeLfYNCfSUJsfy7+1ZLvjWnt39kH1oDI6B+1SRr2zAnTpiz42HjNG\nWTmfkFQ6SWD/w94t/UuMS1kYgqwhoH3IouxqBv1LYsOjDfFQAyi2oU3RAFjh\n+HT/iesy2LwTQ2cu9RNC6m5O0vR0IaIzoNTh0a3FquT2qDYfVdzjp9vdoD5J\nI4hV/IuerviqIji5CrQrQAHHhRwgHI1LyydC8KUlSzwEZUwjAsIDYISq9S5j\ndTi4ilC0Ckfpgr2KJ97P+hpf46PIXHtKA/yjv9gfaG7oI1D4vOdobxmGjQgG\nF5INS2vLr+L+WOK79LLTGar6BqH1xDXvntBanEK25TUO93QDyAULf6u4KhKT\nI+lVnoE4MFtlYhcF02KVWHjfQb+WQvrGpxZQbjW6GtegAHRa53VaHJf8/piV\no25qGNS+XMpiYUKUsxGLJzvD0B9Rijji/UMOOuzUOq+lCQZm9pOeTobYaejW\n300O\r\n=sZ5A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDHjQuXZViAhAFDrE3x+Tpda4iuypWIsgFz0jTpP0udgIgSq3RoWg6Ilwmtdt1UkT7vggEXLyXrURGp5KQ/jhmQxA="}]},"maintainers":[{"name":"wtrocki","email":"wtrocki@redhat.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.1.0-dev2_1574157286124_0.9485303635413598"},"_hasShrinkwrap":false},"0.10.0-dev2":{"name":"graphql-migrations","version":"0.10.0-dev2","description":"Graphback database migrations","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"dependencies":{"chalk":"2.4.2","@graphback/core":"^0.10.0-dev2","@graphql-inspector/core":"1.26.0","glob":"7.1.6","knex":"0.20.2","pino":"5.13.6","sqlite3":"4.1.0","pg":"7.12.1","node-emoji":"1.10.0"},"devDependencies":{"@types/chalk":"0.4.31","@types/graphql":"14.2.3","@types/node":"12.12.9","ava":"2.4.0","graphql":"^14.5.8","rimraf":"3.0.0","ts-node":"8.5.2","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.2"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w ","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"engines":{"node":">=10.15.3"},"author":{"name":"ephelan@redhat.com"},"license":"Apache-2.0","publishConfig":{"access":"public"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"_id":"graphql-migrations@0.10.0-dev2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"wtrocki","email":"wtrocki@redhat.com"},"dist":{"integrity":"sha512-J7vkGYn2bjIEJAfAW7w/A2sfRV0wV8INCxxqs+qzZfZlHC+dN4InzCG/0I2yRJu6mfPQcTpd2Y5hFIJ7r+ktPg==","shasum":"f216a3b71cc52d8797f778d9d91a283a4accbebe","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.0-dev2.tgz","fileCount":111,"unpackedSize":122892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd07zUCRA9TVsSAnZWagAA08gP/2cNs5A4SI8VnqQA7OJ8\n0b7NAmivPsa2kJzwf2foLiQHmbj1/z+DhGDdPKtxh2VdqicFFVRMOYB/ZWjn\n1Q9HXNM3017aCmaAVCj0aIuw+isuWof2IEHrlh2RyOBzo4OUj9PpIk0Yz85G\nXyUZoCYpgN3XMuGiB6omnuh5q283uhixGc4rTwdSFYR3Zsj6Ec21ilxvGZiu\ntADoKl1jNTqTVo7tkrmRjsqtrlGQYOO1O2IQToA4qfIBBTQv396zAW/X4svV\n097YfQdGn3NPcflj84O/jZ+zzD2WfLe8rZRxIldX56Nk11IAEwHLMjyHzCla\n6rF1fXmDaAWyszj1A5mY4t0CohjLTSmBmmvyZ2UOxUpyvd3Cn0cQSb5H59G2\ncGYgY7YG3g3U5hHaEyO+913Vz8AcIy4mzbDGYh/al/PD5LWi988cmRPqcf5J\nefEMr+hat815TRfWjEvyMhooAcRSnEVt31wla2Gb+/xTwM9AU8mho9qzqo21\n2YSYh999yuJivh3zGeA5Pe3cTfgket6zQ07AfK5dQAoeYRVwd8fFA98FVgso\ng8/i1Poot4CbWtaWpYYCH8hGa/MFgelrI9EYR+plpGIhNfWOSrQQWQZRvM6/\nNe/1YQGwHsfeGKmakYKkEyvinuujr2AtBF+/1Y+0lkUMnLyOIgkpPZurs1hu\nImxX\r\n=saYt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDzxrDHJ3dcExUxVpbzU9iqlyX4Zx3p5ChIDHE6/ug1HAiBti6wqXQathnku5uVJtB4l2GdKdPMiT+mzyfiBUkGfCw=="}]},"maintainers":[{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.0-dev2_1574157524070_0.9510570408732064"},"_hasShrinkwrap":false},"0.10.0-rc2":{"name":"graphql-migrations","version":"0.10.0-rc2","description":"Graphback database migrations","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"dependencies":{"@graphback/core":"^0.10.0-rc2","@graphql-inspector/core":"1.26.0","chalk":"2.4.2","glob":"7.1.6","knex":"0.20.2","node-emoji":"1.10.0","pg":"7.14.0","pino":"5.14.0","sqlite3":"4.1.0"},"devDependencies":{"@types/chalk":"0.4.31","@types/graphql":"14.2.3","@types/node":"12.12.12","ava":"2.4.0","graphql":"^14.5.8","rimraf":"3.0.0","ts-node":"8.5.2","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.2"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w ","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"engines":{"node":">=10.15.3"},"author":{"name":"ephelan@redhat.com"},"license":"Apache-2.0","publishConfig":{"access":"public"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"readme":"## graphql-migrations\n\nAutomatically updates your database structure from a GraphQL schema.\n\n## Usage\n\n### Strategies\n\n- `DropCreateDatabaseAlways` - Drops and creates the database every time the application is run.\n- `UpdateDatabaseIfChanges` - Only update the database when your input schema has been changed.\n\n### Configuration\n\nHere is an example of how to configure database initialization strategies.\n\n#### Performing automatic migrations\n\n```ts\nimport { migrate, UpdateDatabaseIfChanges } from 'graphql-migrations';\nimport { migrationsDir } from './config';\nimport { schemaText } from './schema';\n\nconst db = Knex(...);\n\nconst databaseInitializationStrategy = new UpdateDatabaseIfChanges(db, migrationsDir);\n\nawait migrate(schemaText, dbInitialization);\n\nconst pubSub = new PubSub();\nconst runtime = await backend.createRuntime(dbClientProvider, pubSub);\n```\n\n#### Drop and recreate database every time\n\nThis mode is useful for when you are in development mode and don't care about saving migrations.\n\n```ts\nimport { migrate, DropCreateDatabaseAlways } from 'graphql-migrations';\nimport { migrationsDir } from './config';\nimport { schemaText } from './schema';\n\nconst db = Knex(...);\n\nconst databaseInitializationStrategy = new DropCreateDatabaseAlways('pg', db);\n\nawait migrate(schemaText, dbInitialization);\n\nconst pubSub = new PubSub();\nconst runtime = await backend.createRuntime(dbClientProvider, pubSub);\n```\n\n## Limitations\n\nSchema migrations are in a very early phase. At present the change types that are allowed is limited to the following:\n\n- **TYPE_ADDED** - Adding a new GraphQL type to your model will create an associated database table.\n- **FIELD_ADDED** - Adding a field to an existing model will create a new column in your database table.\n\n- Relationships are not yet supported and will be added very soon.\n- Fields cannot be set to `NOT NULL` in the database.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.10.0-rc2","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"wtrocki","email":"wtrocki@redhat.com"},"dist":{"integrity":"sha512-tsOOq2baJ8mZeqUMo1G14deYInkyFA6hl0q2+fDsKCpuTb+GowH4u+UVVo5diWwu2VuYTZa62BPTd/kFZRcTQg==","shasum":"0fddc3ae06d60689d929e54540b77b790e1e1155","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.0-rc2.tgz","fileCount":99,"unpackedSize":124358,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd2XLzCRA9TVsSAnZWagAAeScP+wbFrJ6A/x7LCWcQOG8G\nFhrJBHIHujGldCZLnrrzaswEpDWyV87/jzlG00lzKZNJJ/bC/rV1MKwzkLxP\nmng4/0v/coXJSjYtfUglw/UgYgHdvfJH8E5XMrzo7KP1Hl1V6hiZFOXBdPEW\noJ29nKcwGKoopYC9SArKcMpVbg6hgQVWCzZlj+zqgUH4ivpfO3+mvo6uj+UV\nByQ890Pw0yi7qQ5kH/Ytw4CdDIRtNbxhvuKh0tgP/NQV2FPyn9jpsBsZg3Qm\nBXsVks4Oxxck8pV9JHEhY++ZtjiBG4Tno66+4E3ppO0UzAWlv/HwuWqzRWDg\n/VtHEF/Rgo2VZkGHGte10mHwjK97ektCbUf3x/6coUD6azscZeJ7wl6DmXlG\nN5BI/41A5rfpg3rdPEIM8E2WlUUE1OodJXUPDLivJ/SlQbA0kH/aE8SyqVA9\neEmCw0rZiBf8jmMIaGBAlyXbbyGWZIvBCBjeUCVpAUY29stU6CIzbIeK0m5L\nmI9d7ZWXIcl3ma8PXUBjruH+jfcwMlpwlhuFRf1r8RYmQ53L5E9sZ2ZP9GQD\nq1BLbf6IFmYIGTncVX4PxDU2w5e1aPLNmqbbKAfzr8Of9dH9QVBJ7H2WygZY\n38wj/GzvnG1zFGWqe+tCCL5lOawrlvdyodC18FRaG2jXx1qeHVoFnTTEOtfu\n+jdF\r\n=lYMF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB+kwe2ZZDROfk/lsanC5FZwYmItxek7EYt/mAkcuWr5AiAFR/mBD51fiVa+YMtSfsB97KWdJd4iS18qgIfKnGCCmA=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.0-rc2_1574531827029_0.10763419229086901"},"_hasShrinkwrap":false},"0.10.0-dev4":{"name":"graphql-migrations","version":"0.10.0-dev4","description":"Create & migrate Databases from GraphQL Schema","author":{"name":"Enda Phelan","email":"ephelan@redhat.com"},"license":"Apache-2.0","publishConfig":{"access":"public"},"main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.10.0-rc2","@graphql-inspector/core":"1.26.0","case":"1.6.1","graphql-annotations":"^0.0.3","knex":"0.20.2","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.14.0","glob":"7.1.6"},"devDependencies":{"@types/graphql":"14.2.3","@types/jest":"^24.0.11","@types/node":"12.12.12","@types/lodash":"4.14.108","ava":"2.4.0","graphql":"^14.5.8","graphql-tools":"^4.0.4","pg":"^7.8.0","sqlite3":"4.1.0","rimraf":"3.0.0","ts-node":"8.5.2","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.2"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrate` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrate } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = buildSchema(`\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`);\n\nmigrate(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `transformTableName` (default: transform to `lowercase`): transform function for table names.\n  - `transformColumnName` (default: transform to `lowerCaseFirstCharacter`): transform function for column names.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrate plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Name transforms\n\nYou can customise how table and coumn names are transformed before applying to the database with `transformTableName` and `transformColumnName`.\n\n```ts\nmigrate(dbConfig, schema, {\n  transformTableName: (name, direction) => {\n    if (direction === 'to-db') {\n      return name.toLowerCase();\n    }\n    return name\n  },\n  transformColumnName: (name, direction) => {\n    if (direction === 'to-db') {\n      // set first character in name to lowercase\n      return `${name.charAt(0).toLowerCase()}${name.slice(1)}`\n    }\n    return name\n  }\n});\n```\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.10.0-dev4","_npmVersion":"6.4.1","_nodeVersion":"10.15.3","_npmUser":{"name":"wtrocki","email":"wtrocki@redhat.com"},"dist":{"integrity":"sha512-vS77RnYlQaqkU12uIkPDzceo3j6Ny2aoNL6Q1l8P32wcfBA1Gh76tWk95gcIxQKtF+GKy6tEs9guK9S4O5o3Ig==","shasum":"80eba9f3deb33b89ea65d41db6bc6c9fef5af48e","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.0-dev4.tgz","fileCount":283,"unpackedSize":475754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJd8RVICRA9TVsSAnZWagAAhRgP/RkvoqVM5HqcY3PdroFB\nGyLcKmyJh0GvZpZncaBqX4vCB3TIHReUlCA/e+UgTjQNZcijvX113uHeyrRz\nDZT8+uwXeGBY/9tc/p6tVCUEskTV0t/o4jMOdcIvmkxGk/taas7lBV+hBbag\nVdsBgyTJHh1hFGabpJaO/BMSAnRHDD4uDv+BW/rboc/tlGWSgJKpb2PpdIM+\nDvfEZHHoGNwmVZu9UtNNOTz+kkEh11TNjUrIRCJYsFMV7biept4om8lozVLI\ngf4UZVqcW0/xgAL7yKMlBKAnycgYLp1tT9b/gONIO0TfLBhy56iBf1GbkAEG\nrPLL7o3J0T3Nxl4qGW1SAVRflXZ7eghvmQY9mWj7JQSShBP5G+jF74Ez89cz\nj0NqQpXuX2fv8WG8uMcpxFI+firs94M0EPKa/3UoQJrTzU3h35bQx/Pl9Y99\ngGhX8+7TM6k9DBGCC4zfLmu1aUGRqoyQBR2ymg/6ysbjmO0dnhB9Ish6zV7/\n1SJ2dHu6gu+kiA0Dz6uY7O1Yu7YxnPzgedY36hrzuwCDfx+SwtvRYrNYly64\n6Wb34mz+6PA1Wmxzwh6fmiTghb0mS1sXUlQFWkcyuKvLRvF+cz1CqPJAatRg\nedv/xW+qf4NyA7O/sGKoYHZDSY56uCw76+N0NLg9+T+hCpu9zi2BExfGdzkO\nK9wl\r\n=rZ8+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4NtVkM2GuKMAkNyNixkBanxfX7lCZbrgCWRn/9YfRbAIgf85pLQq/gnm+an2/Dgku6/ze8UGFzTQT/ElCyohE2Cw="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.0-dev4_1576080712203_0.6635364021530221"},"_hasShrinkwrap":false},"0.10.0-rc3":{"name":"graphql-migrations","version":"0.10.0-rc3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.10.0-rc3","@graphql-inspector/core":"1.26.0","case":"1.6.2","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.4","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.15.0"},"devDependencies":{"@types/graphql":"14.2.3","@types/jest":"24.0.24","@types/lodash":"4.14.149","@types/node":"12.12.21","ava":"2.4.0","graphql":"^14.5.8","graphql-tools":"4.0.6","pg":"7.15.0","rimraf":"3.0.0","sqlite3":"4.1.1","ts-node":"8.5.4","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `transformTableName` (default: transform to `lowercase`): transform function for table names.\n  - `transformColumnName` (default: transform to `lowerCaseFirstCharacter`): transform function for column names.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Name transforms\n\nYou can customise how table and coumn names are transformed before applying to the database with `transformTableName` and `transformColumnName`.\n\n```ts\nmigrateDB(dbConfig, schema, {\n  transformTableName: (name, direction) => {\n    if (direction === 'to-db') {\n      return name.toLowerCase();\n    }\n    return name\n  },\n  transformColumnName: (name, direction) => {\n    if (direction === 'to-db') {\n      // set first character in name to lowercase\n      return `${name.charAt(0).toLowerCase()}${name.slice(1)}`\n    }\n    return name\n  }\n});\n```\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.10.0-rc3","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-yJuy9fIF8pN8lRrhSJcw63zgKODFrvZNlYU65KBhU6DBmFrO/aWC/HfO/APCydyQmJWNGfSvtPn8yv+kasiy3Q==","shasum":"80974a707f85af6b052be8e7d1934481aa4cbc75","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.0-rc3.tgz","fileCount":213,"unpackedSize":398391,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeAP4MCRA9TVsSAnZWagAAuUAP/RgO+fiSWm9xNWfEhz+3\nkvspj86MygPrv6/Ec8g3Uu1SK4ZT9f8t1WmxpBc2uVzX8+4FEl1AxjbKXu6/\nuxsbV345nnzWuPumBZPxC9S2mVEtoHc/M+//c+08sgk0enEv4kXQT7Qd31zt\ng4watX/Hfk1eDTjhtmphOaHE1VGuf5KKv5s3Pir7uEx1HZ/Ni3Cbr3/0EeGs\nYYDlajg3n4xt5t2LDr3JFen5uw18YoJIWMJDh2TmMfOBDbibx62UI/PTCQLX\nfdRAMneKr12Q2lgkfHSRZrKQ9Z4wugMWyQ/g0BxvQN26SkJG3/61sZwP4Rvh\nTHB2f+9/2ncp+Yw5VUWVuqNQrCLr/FC4zYWpub5/LXq2jqjhkwyL1Jz/uVtQ\nmwu7mEZ1+Jqr4e88AXop6W7ZppKM5pav9sFqlAXjYyAznJzeVZxoh82CVQVf\nPwsOpsQNOn0ZL48rf8jSB2DLXA/jiF9Akir6saYkNKWKKMCqySC7eTfoaa5c\nRcZJQokAkHznmkt3Iph+1XbguORvbAFAjJTJluqTXPOFXJT7rLqUvkWhFD9Y\nQQOjDcUyw4b0DDgvPBh7X6jgEs5DbQEgTexrYtnTZ/JDO8oq3av1UF/dykXG\nYijmqehD5Qgju06LVBaH+IsT2kzZbw8rA9NVufRvzdJzOKNA96q9eg94hyaB\nMhxx\r\n=+9hJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCi2OH68+eYyq+MO55D+eC+paJTsAJ80d0l2CIKbavHZAIhAJKkx9Es8NSBVs95QcdcGuoiYv7+Aq6vQlg24Z4wV6X3"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.0-rc3_1577123339969_0.781568356815556"},"_hasShrinkwrap":false},"0.10.0":{"name":"graphql-migrations","version":"0.10.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.10.0","@graphql-inspector/core":"1.27.0","case":"1.6.2","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.6","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.15.0"},"devDependencies":{"@types/graphql":"14.2.3","@types/jest":"24.0.25","@types/lodash":"4.14.149","@types/node":"12.12.24","ava":"2.4.0","graphql":"^14.5.8","graphql-tools":"4.0.6","pg":"7.17.0","rimraf":"3.0.0","sqlite3":"4.1.1","ts-node":"8.5.4","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.4"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.10.0","_nodeVersion":"12.14.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-gzyM6U5HtlqIfbj+3OFQSbtd0gT4pdFd80LCrpJtQao4XO22zk6sP7GBL27GxdkdpNiAQiGcH4OIlfbJ8aBUrQ==","shasum":"b89034e493f9e8a11d08991fafea0b095f916559","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.0.tgz","fileCount":211,"unpackedSize":383742,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeEy0qCRA9TVsSAnZWagAAVKIP/08XGp+AFG2BTt/BhliU\n3RHgAcAC3LrgXXLwNMZ0yrD+wN/tRsH0TUHgHjfVyP8WlFNRcxzG+hAl+eGs\nFHc4PGmafyrZLop4Drf9VQTH+GenObqzkxZK4dXzSHK8VSmH4AU9E25kfEwr\nkT69vOBbkdbl2GvSPDE8f6NQ8D4k+f6VbVTNoyVo+x19SjGGZOU1w8jU1zRs\n2Itiv2XdJnJrONC5eZW278wfHQCiIDzRtuu/MixrtQgUwKnqaGAePUSdmhZe\narsjNdTY90bTuHPlNcqFu4ywoixsQHQAXJ3bRXBPTf83ftjNaOJ3g+9N2Mpi\nCFHHBuPiWfQXn5Y0ND6QA+5AXlwmbgycm2hmD8GUqiqv1Fq6K6JNvJYBtgDm\nxGnujHPqxmXdQ4r3SoPoecVKhLrCy2b3Ha0yhROoxrQ4meFSSSo3TBCgeIoz\ni6srLr0Q4EwN1sa+vSNlly52Ic9ueXK2J9y+zlZXfZv64XhQq6MuLz5FHdMJ\nM7bkbhC4S44dKl9KWS+5UTap2HElvfiR1EpcO2sFQlKtaVLoLcktG6/G9sBU\njuelKjnv6iVrdOr65Xi0OzxEsNshUL8dx7tPOM9DbBpFGBhJL60rMl6psjCB\nWyUAf8LkxPex/TtYNeplZOY7D8dxWT+h1URUTNLEaJSdDbP7wkM5E/2MRHhs\nrOAg\r\n=zWag\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHWTYf6DiRnPOsTYBkSCCJe7bb+CfJpT3wFfMYqOnuugAiA42GMw2U9r0hbFPvWc1O8p4T6MyirKS77GzVgnUOyBlA=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.0_1578315050229_0.30741403158944736"},"_hasShrinkwrap":false},"0.10.1":{"name":"graphql-migrations","version":"0.10.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.10.1","@graphql-inspector/core":"1.27.0","case":"1.6.2","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.6","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.15.0"},"devDependencies":{"@types/graphql":"14.2.3","@types/jest":"24.0.25","@types/lodash":"4.14.149","@types/node":"12.12.24","ava":"2.4.0","graphql":"^14.5.8","graphql-tools":"4.0.6","pg":"7.17.0","rimraf":"3.0.0","sqlite3":"4.1.1","ts-node":"8.5.4","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.4"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.10.1","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-UNLFRbqH06i5/EenJ5Q1963VFaeQZXjnu3qBSk3KdpDS2TLCQIgJeZWu4Ra48ivKhlNGQEnwsph5xI0qldUv/A==","shasum":"6ec4d5aa8444a9a92fe2ae3206d29d92aa6cd5c7","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.1.tgz","fileCount":211,"unpackedSize":383599,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeF08KCRA9TVsSAnZWagAArPAP/jp1y08P/qp6QxhCrItc\nLrM2CgN73o9reH+UbnT3X6sMAmPn00BV3zAidIsmBtviw3cBfJH9nviB5B6v\nD/KVLXJp3MjctTLLEnCa8vqep/9tvtO2ohuReNAdNoTw/ObomQ+Lg3bvh9WB\nqDia/kq3bcmm927X0ukzktAUaO/mekSESjpCvPcyUwAy01idwIczhp1t6rHA\nMlcDmZ7tK/DgK1p5oCGHbqSH+bkOmvE+nPXEpyvTF4/zF4J1vIr5L3K0Yu28\nT1ojpvSr7kxYW/3r5fqdT7SmfdyOsdsnnfjg4RkP8ZWVmeEKK/rEYraL+Aq1\npv1VHesXIQUFUMudt+IAc38YOH5WECPBnNAMwhisY7gf5eXqAK/fIWhYooLY\n4VzXU+K2pidGtGpua7N1tKdiayzcvePPcE2O/PzfYwwze6gszNLigEEn8jJa\nNdWyH9s1JkAYuMm7qcjaGED+HnDh6Ut1s7YqfPuHLNNqYVlNYstGPTxMzj5y\nE57W+7qYcKm10LxSO85XNIWF67eCG+WUhrevIdfrw194VSeI+zMlvW5PnbF4\nphmnhfNoAhhYKSr0B/TqCvuWTDNOZhLkcqM2T4uyDXAt1SnYuTAtXiY5o2Ug\nw8YguMap9LyBtmfknAm/+T1ZnH+OMB8pb6r0IdLsDWt3yEfiv4t2Tr5tu3B5\nF99u\r\n=HjQI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD0eqki24aY6vJZPpoM07qCtYBRzC6rpngdjFSKkpQMJgIgfn1UYvXWi+rxyZb2x0Tpv+KS+/SJn6wKbPAjxxN5WDs="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.1_1578585865941_0.5830848002952282"},"_hasShrinkwrap":false},"0.10.2":{"name":"graphql-migrations","version":"0.10.2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"tslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"npm run build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.10.2","@graphql-inspector/core":"1.27.0","case":"1.6.2","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.7","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.15.0"},"devDependencies":{"@types/graphql":"14.2.3","@types/jest":"24.0.25","@types/lodash":"4.14.149","@types/node":"12.12.24","ava":"2.4.0","graphql":"^14.5.8","graphql-tools":"4.0.6","pg":"7.17.0","rimraf":"3.0.0","sqlite3":"4.1.1","ts-node":"8.5.4","tslint":"5.20.1","tsutils":"3.17.1","typescript":"3.7.4"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.10.2","_nodeVersion":"12.14.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-X8jINgnxTELZd6GeAZKtY6Qj67zOH/VGCscOeHo2QBU2bX9otYwtKSX6lrkLK0onuKqYSP17E+a3lu8G127sng==","shasum":"0ec02970890812da2ed01873677ac86b97a29443","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.10.2.tgz","fileCount":215,"unpackedSize":391159,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGJ7KCRA9TVsSAnZWagAAGccP/iQk3EXITLGsaNkBOzmF\n3qZ5c176VdFQxtaspdlH81cPsRtP7PLQgb41lNBY/XhDV3zDX9v+6ykHIH2b\nuCtVBAZ/K/SD61DuBqsqQA3gi0L/joQlp0U4obCcVlzUGcwUnxmmDjABBHse\nAA/GaT+0J/S1R1zsK3/CJcgZ7TlHx9/9dq1ruGeYBfkWzxjxncIl1oS2FBD7\nAKbKkuaxBF8iJ6N6tq/2p/T7Mdej/XQ4bXCnpXq/zdrriPt4a3QcW3oG1yL6\nWmzPvOXDPWnHxm/nlV8x5SPc7VOEyfCE/xWBO6Uw7OMqJfwETOasHy2Lp5je\nx0US2PbrQenITq3D+iBBaAROV6IAJlzjP5Eos6SEpq6rOa/R3Dn4hhd58v2c\nk44sUmHIlKGJRSyospNp/++0v9FVWGpaROThuiEuxjO5FDlrM6zY7KMShNm6\nI2+aUpkZSJUjV+a+X787maFvQwPhVq41M/aJBhX+wYwZT9pQ0lLoPEgD1839\nFHq5xvfo4c4Q3cbZzBUIofeHdXb6HTvr5M0dz3GsRWbW0gcsa9I4ZkjYU9by\nioVkcwDKZd3pmNCCE4d2l+O/L5hMVHyId+jfS1toVQDn7fsQM8Z0ci7YRSbt\nsNgLV9TOZtsmPRKai0C32xNh+s7piojt64q9JydmVmEfMJ2esWeIX56nXiBM\nQePW\r\n=qxXU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBJ7bZ2Y36rZ592A/WcU5K3pb5nptKy5TfgFsO9IygooAiBKHVAfmH2E7Futn6iR6avUmXdPnK8z7vL/6cgveMcHCA=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.10.2_1578671817695_0.24894900428503552"},"_hasShrinkwrap":false},"0.11.0-alpha1":{"name":"graphql-migrations","version":"0.11.0-alpha1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.11.0-alpha1","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.9","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"24.9.1","@types/lodash":"4.14.149","@types/node":"12.12.27","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.6","pg":"7.18.1","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.7.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-alpha1","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-wVLno+5rt5wR/X1RnYZWnGNc9C9of8FQ9n5TuHHoPwaAe7l/5xw2rneVyVpO08qVhOr8xd2NPS7LTfK3dwW3Xg==","shasum":"9329fc98355719f2fab624e87ec2a8f82bd21783","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-alpha1.tgz","fileCount":126,"unpackedSize":271460,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeSmQiCRA9TVsSAnZWagAA3FsP/RfAEMi4uq6HaAPYgYNd\n8d1zcIQ88Br4QgeDgf67miBI4S1v+aTtHjM2zvDXJPLeUoQoWWayVZiP7JwH\n7XGG5aS3d7lFQ9q1nNcYiDD32rTzzdsVRlfDrJkQDMdFrwPAsUUu7InJu0+x\ngD65o9EvXRG7qE74l+MRlpHIeSJtyI6tZ0qkzxI8coIfNPlNzp7n6rtrcyta\neHmGq6rTi2c33yyebjNZYBd3W8oVF4EClxCeAGbVfkkf23dtGaJAZaspvK78\nc4m41eFQXIsh4NC/88xRG+TTHwyPDchaN2cAqTlWQSItxIuSwp8g0mUTiiRF\nZGV0csAqkguHGEFzMPqPMApTew+K3WJoC4VES+l8yf+vY6Td+QOPxEaZcGGJ\ndCAswYce68oYQMmAtqFWcUvoxzPTAHgXIQIgl56AXzsR6gxpmOl5Pn1UAw9z\nxmfta0FhkgAsp+d2GmaMmD4ndqVaZZFFPplP+krXYCPwX375dmkl+tqTZy6t\nsbKIXyrrod2vEbtf2j2OVgZb4TRFq0pfIau+3KsuJLZ8RoLxu1zk5PATgrIb\nrhGGdwTCympFdqYdqC7+uHtgyfoUhoWMI81gRujIA6MqadQgyj01XythfQNb\nD2OuisWsBbQn1xPtjHXFA9Eyr8gRv5xFRY11HvZCIFqi85Dd6rBeHoJJ5yJs\nOFyS\r\n=O+rG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6haHk4SixRi5sUnG4f0HEp4PpWe18MxHqaLC9x43pqQIhAM1pBCjQzLeIC1g4wE18nTCXiysNwuUw4LkYNQwlcVP2"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-alpha1_1581933602310_0.3811463165539488"},"_hasShrinkwrap":false},"0.11.0-rc1":{"name":"graphql-migrations","version":"0.11.0-rc1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.11.0-rc1","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"25.1.2","@types/lodash":"4.14.149","@types/node":"12.12.27","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.6","pg":"7.18.1","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.7.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc1","_nodeVersion":"12.16.0","_npmVersion":"6.13.4","dist":{"integrity":"sha512-nWxelRJmLvs36wt1vqTjarJ4hx+0kRBebywlQFzYFbJjAmJf+x0to/5Pny+n8o9N0/e+oENsQ7nmLOCGHyb2DQ==","shasum":"ab8d440c362b7e7c8ee4cae295ece71f7b91f0f0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc1.tgz","fileCount":126,"unpackedSize":271455,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeS+UHCRA9TVsSAnZWagAAlUMQAJ4TQcOdngSNt/1zO3HD\nFZC4ZN9NsisURY4M0l49wvw+AtbJiX+mlkrgDr1rZXVq7aDO1v81Z/AIyY55\nUUcKF107PNlXAiXXPf664BJd5VIWLC1OXIUUz9a3ySAmYsq8TvfJbmVEWWcO\n7IopFSEr3VvdU2aj0rQChqMU1yTHS4HIBmQeG2m7BaiD8pOWFUkSxSrsrnsT\nPzLhxGnJw1lWeJ5PxgEt/wP92YyWaOQ3YbShiQfY+/ocqoxxR89dfHo7zkyT\nhIC9jUmRAL5yINAezYWQkvHA9wIu0AkJU/V/KmVCmzfF0wVuw1VremAE01dO\nRUvp1jNr44tVm3ZxCf9+5xyzGNodvBuH+PdeRwZkbcKHe5yVkySE6V15Il4D\n4HQOv4OmI4a+zy5/CI0T411DofuakHYkRPQpxoVanlE7xvqtNVhjTwdUB38J\nnHIAg7qMlCklIAT01JBgMH2veQXG9H1dycG9s0B21oKIgg8IWocaF+YPQHOO\nv9T4R7j2wGfDEMCGf39w9S9vf4u3aVnhtA1vR09c23Z/LJhyb1/Ie2hb4TjR\nhZetvufPErdasGGavERwTS8VYp2m/4dJILFBP1kCAcjdsciHR7ep1znpetSu\n59D/4J380o/PfisfXiQv95BJh3lFAeki+eyXs988mO3V2pDdr+bokzFMSpoM\nfBiT\r\n=4Xd6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIErh8oIgUnfz8lMkhWqy2vzZqkNOtOsIFwtIha9n/05kAiEA/qzMuSUYb3334SARPGf0GZyf9r4uLWrl1ZtP5iXMYHo="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc1_1582032135235_0.5521138356526982"},"_hasShrinkwrap":false},"0.11.0-dev2":{"name":"graphql-migrations","version":"0.11.0-dev2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"^0.11.0-dev2","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"25.1.2","@types/lodash":"4.14.149","@types/node":"12.12.27","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.6","pg":"7.18.1","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.7.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-dev2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-qizWRwTenzLZk9S6//d/0eOflsDSdAGVWuQHaZ2aM5dp1zhPTW9rfRKnWKFoKUqIwNBs2VYHbAj8H1c0fr2GPw==","shasum":"4fd6a86831f54a641b51f247e6e76988e1d7c7e6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-dev2.tgz","fileCount":126,"unpackedSize":271457,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeT+h5CRA9TVsSAnZWagAAxwwQAIFMyP67Yv0cs6FDI8tK\nMKZhc270p7A5sCNOd2Kj82pHwe7owgWsDxwhYcqv9zPuDJfvpILKip99rYyw\n6agoKOPtZww5+XrGaB+vgyYkEZDRsi7CWonkSbuqVox+I7FHnuCYDoIRpoDP\npOlHzDVnKsTQUY+jYgZj7RNeVFHbzApq18rUUmIbRQYp0Z8Fc5bai8kiW8S6\nIMHHV1ASHOyoTslUH2DPSDJ4rC7L61Gvf8ufCXoCvItS21Tj/wyH7jasjp1f\nyh0VNSSfT9Ei4AKC/Tt8xAnIvgA+NrhdgbjwrfpgfM1cKBfE/ibGsXa78TAj\no8STV/+4HTXGq98dD/Ij3bM/7rC0ZYQ05SCzc93uIBdAlIRO2Ll+pOJBew0c\nnsQLEbUnuAp1hEdVsEpDC6/5fJ+XegTFLHb0lEwBafcm9TEpckgt7skhyftT\n3NuJgBRPXTN4SaPK7q91NgkKcPQN0DfF2NBAnS49vbXTrjangPpzYuk2lwYE\nYviP3b9QXSq7mg9Ugd7UpN1AD5yJ8bklX1q4zIoGDrqjoNHumDu4lJeILZUZ\n+1MT7JqGmkQbS0VjOv9AtkJmSkEYR1jalhYb06RidiKQ8dIC3Ah/Ksr32U6U\n7Nk0/R+ZyQgDieQXw9RtApIfwZ4h51inZ+t+icD2hwvyFzuYkKO68FmcJtLV\nwpyv\r\n=lByG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDihlLQ9NSRTM+7hCr82MopEvAC3UgBWhcciF5r8QNmNgIge/sXF1ufUhG8V1JdCqMm3XqMWsvZpzdH1vTXOyt+gR4="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-dev2_1582295161085_0.993396730415177"},"_hasShrinkwrap":false},"0.11.0-dev3":{"name":"graphql-migrations","version":"0.11.0-dev3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-dev3","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"25.1.2","@types/lodash":"4.14.149","@types/node":"12.12.27","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.6","pg":"7.18.1","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.7.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-dev3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-LwzN/xcVtv9nfnmyvpumwuG51QkBRIrFp9dLrbhCIDjQtv/djsPZvdz3EnP8hVxOvSpURIrJHFZxl9jEdz9ZeA==","shasum":"02734ab990e2a48046206a5eb61dda86158c4489","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-dev3.tgz","fileCount":126,"unpackedSize":271456,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeUAKdCRA9TVsSAnZWagAAavAP/2b2ktlexeMzk1DMYDOM\n/eJIW5ms/fKa/9Ahg+64l4/L4yFaJ9+M1pcuNQyTIlh+pcAM54unrrquOEbH\noOgb1I/B/X9l00y65QY2ydHVMplpdb4L7SoLiYW5hlk4s9m/h8oZf04KVXpl\nEyA8/7bJyLKiW+qiggtHDBO/s1DBD6M+IlVkptFLw0Ln3rGEHDn0Pr0oQ3xw\nQPHLqeO5iPrQpqRwc1gdSmT6K1PWvj5Hkx88elacBOPxzbTsTq+dHF0+wwzU\nPxzY5fk5xLK4JzZBKJsV9WQjj1SRs5dvAASwtH55xgBorYLpnOkuigvSYAqZ\nbuzmJo9jYrusg9/dgOzopggD0qBUqsS1CbYff6XI08f/m0Enie2VvwCcl9pl\nUvD+VrGPFk49m3xRqEVC1O+BUCqgrGBctbWpjNCqqwqoH/u60fxWjASVID2M\ncTSbHrrGBzGoM5sHzEqI1pHPU5OcSDj5XcwhzMlZjR/2ANfEQTO/is/0OGvC\nFu0M74xY7kF8Ai7U3iGmrd5Vd3s27byevftZM+Fi12O9G36SuvmAaUrq7f9l\nqHbw0Hpy+ldxB7yYIVwm36ivX7qilTOJDCvotv+Qfe9D5w/HMkILSwcPQLoa\nIgImj2hKG8jsvnAHrONHE5sSO6bbF3z3oXCL2xSPeHHNFbGZdRiDsQUvhDwu\nuPHl\r\n=Ekwq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMWN+zJzqLezviJpf0aNhBHERE5QZ/yYWkOgOuckXQuAIhAKPTtAE2LCpXYnMDRlAs+bSri+Z0g5KVxy9+Nsjz9jYG"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-dev3_1582301853397_0.6860024312132691"},"_hasShrinkwrap":false},"0.11.0-rc2":{"name":"graphql-migrations","version":"0.11.0-rc2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-rc2","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"25.1.3","@types/lodash":"4.14.149","@types/node":"12.12.28","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.2"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-2KldtK+PF4H2fzGO37hid28zgQt4DWiEB5DGB7i77HBL0JjvEtKCD8037lkPsCXAL/thuejZL4AFIqtk4bX5xQ==","shasum":"51d29684705aafdd50974506c042d9e8abcfb876","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc2.tgz","fileCount":122,"unpackedSize":269340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVAfwCRA9TVsSAnZWagAA4aAQAJXmF2gQC6O5eW3qWhfv\nlQc6AqUx/eetv5fNMp9wFmyapsMSGYPn/5YXLn3Ox90F/B+dGs0ios+kd95O\nbCOT7xGWvGw6rm1mPUOKUGDQUL/C4ashf/+e5QfAvr/lU3l1XGWtYl1/M9Z6\ngQFdTsXFHtxaStU7oY7Lsq4iXvXhSKaChq6qnZtSziqRFBEs9UedimeBJVka\np1j2g2HtsRfa9sylOxr+xZ4zJbthoMpSyPwtN5RJfTsAqMy60/OzD4+W2pkk\n6VJJaslFGPFbRKG4rrXYzfUsgCbJz0BmLKtmdxrNHkHFblCvDXtB4ipgGBTi\nIP8D3vaM3nWlXml83ghyvPG5RwxmSE8GnhIrBhgckC1vZ+dAcjlm1zhKb8K6\nm/IlwoScP83nGssO9FK6BEp6pe3FKAStBimpEput8YYXAybC3PW4mGE3DEXa\nh4KMX6+obokL/+lmN+P6X9+5t1RPGWujHCPUDKTFzYsyprqCy0v5zGnSNA6Z\nxvE4hygeMqTxK39UunMpPNy1etF68RhCx8m/VU6RsxKKkNV0QKvvlUYkCe3y\n7SDV3hjway2cpkaa5DzFJ0hKFbEU0kKB4xofXr9dGg7J0ufhfIW/dAY8U2RI\nkZwHejZKBNmlaTMJj3+GtPV6jwSJmkffXGysJL5uTVkdK3yXDrf5r/sfxKKS\nuiP6\r\n=Fje0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC1mn8PrVZnmg6jI3dGlyYgw7RniObndmpOrsYduWvplAiEAh6FDei+g3o3mJqPUQJ0l1IkGwQuCNm1nLDRD90mb+J8="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc2_1582565360251_0.9815116030363356"},"_hasShrinkwrap":false},"0.11.0-rc3":{"name":"graphql-migrations","version":"0.11.0-rc3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-rc3","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-annotations":"0.0.3","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.16.0"},"devDependencies":{"@types/jest":"25.1.3","@types/lodash":"4.14.149","@types/node":"12.12.28","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.2"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-jOpx4fH1V//uk0xI7yhieByFlyj+xnecwXCM3vgPaXBxS1p9AxQr5e31Gemogxpsa2rRIr4U4Lmd6LhVDaUVkw==","shasum":"88439f57754d249b74bd1b92aa0e2814e8324a37","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc3.tgz","fileCount":122,"unpackedSize":269340,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeVFzNCRA9TVsSAnZWagAAJeEP/RW2TOAQVrDnCtvBxitK\n6EZhPlCw8xBy8HRmmYaAStkc9vAbNKUPSatSGOQH6hMFmbdG+ySlNnv6vySZ\nNxC/878ZNusfXDZV+sKgQOGFwcNsfjtQSzSe8/TjOEFujGRHRj9loFZtRPB0\nbjG7fkygeu7Q6RATQBMP82oKZa6Ig1jcTvbEtSC+A1Iwu0klibhrSycefz5j\nX5ErcguG/9wXRKp17L5vFtpmWwgw41ilI9EWdG1g7bnHd/DjJrj9vyI63IuS\ngfITn2nwg6FKoIt5UZ9yQMp+p+dBNaSN/o8tJU0s+TOnXBrPBFgFwrCjE+fJ\naGVvI1fd5IwVHAoZQyEyvBRsWIJuPETeVN8p02vS2nNkYLSya0fFLSQXKBa2\nHHfIChmzTwQEQekSt/dw176HCOkmlycQNN+7lkqWzHQFXQPcTe0CqCUxHwMk\nvn5iNzHDyQek76YXH13o9+14HsDUEpmRL05DNR02gxzT9UrW5gpy73chryh0\nZwhJh9p8y3o93t1i0d4o+zNFhkc4eZ8HKcd2yND4+IlqjvNxO0dpekIjKbaM\nUT9hNHieoL6zPwrKCDAqNB2O47bcdnCYBtHuYcPDse2WCbmkPSCi9z4nb+4B\noRRd8JbW4yROsHzMwhg5AycxkMSfd8UyNh3bOuucW0QG6gTiQ6O8pN7FgSLg\nBx5X\r\n=N13v\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDWY3pnLbbYk742a46u8Wn0rlfWIOUUanThKr69Nkcw9QIgFZT7Cr87zTcWuwNbTAnT8yBzPvFdTxWzbix9OS4OZ/8="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc3_1582587084967_0.8884128193613643"},"_hasShrinkwrap":false},"0.11.0-rc4":{"name":"graphql-migrations","version":"0.11.0-rc4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-rc4","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.3","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Bnokza6BGVr2OHZY0NHpwwpsYYsvLhmOMywY4ZsW7XPscy16Mg53n2m6fIG0j3ZCLDmqBQWYjNqedNrBnLt8hw==","shasum":"7c69e678cda0560e494b8107812c6f75ca969971","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc4.tgz","fileCount":122,"unpackedSize":269293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXUZsCRA9TVsSAnZWagAAfJkP/AgC4bdX4nN5YvdJCm17\noAZSv27K9+KwTsPNQBtMmzTWqSpCy12fBZ/IvwH2DCSp5nv/k+EvwbCGb7vk\nVKYotwCfNlZqqiWAEe0gEKye4Msm9noxGVvSAPNBydjXexjm8ZI941V+l4li\nNdxGMpeDGMVf2J1iNapxTV/8M+nAD9h2U6p301I+0NTG22mPD2eYus/5bmSV\nmUqrrhuMGI9eW7oIndEpAi8TZK7GkOlLIQ7q23Er9djzyUEupysUPFR7GBoc\njBu+63CQa8FfcP6DHhaLWL+fdTTUzMRrpnjBHsDHN7rG+8BWTQXeSj/fQQxc\nGOvNPdh/CM0+swmNquHCrjiHs3NuoNjKetK0p22KM4GV6VztCZ5+N7WpssUs\nFvcrcDMWLoPfmzvtSG4o2wy0aUKAI4zV1HeoVuD4kJKF6EczqncgflJzcpFN\n4tlKuU/7+H538Bn/P7jWDzjZajwZGom5fsiu/ofonf8ROni3jld4cCnj66v2\nFnQvZylCJ7UpW5YWT3JrLmFhWWLnNaxJu/LrEnbTsMKIAXNq8iZ1QDd/Kh8+\n47t3u6yN5VWBAEwbRlT9SEsa0PTds0uhsvN5LU26u95j6GsPAgSzFQg1mcvF\nVeqKS/+MvHuoUUYnFGYobHCuBB3QVd8n4yHLIJAVNwyywuHvLHUEk+m+iq3I\nG8Rz\r\n=oUlX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0arOJKhf65JHMFKahjGyraKUynDW+R/7EtNzVbw3FRAiAlaKeJ84Yu3tDkMe88WIy+0ehb7nIHrGolSWzmiD+dog=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc4_1583171179981_0.0360038625266772"},"_hasShrinkwrap":false},"0.11.0-rc5":{"name":"graphql-migrations","version":"0.11.0-rc5","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-rc5","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.10","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.3","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc5","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Opiz5RkFuXU4cxkkL3l1C+uizJHad8reNXl7fPrrzlPnOpsV33TDlMrTgw8/B6DPFscY1GTizrBsuLAI2phtYg==","shasum":"ea30a1ff0005e934dcf52fb2f6395fbd488654cf","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc5.tgz","fileCount":122,"unpackedSize":270504,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeXowWCRA9TVsSAnZWagAAhdcQAJBSM4omphfByL9v5+xo\nKWIz7QlflM4CUL4ggz5qTDeWAhNlGwsYofNT0mYmnnhMUimt2OibfITT3ZMk\nFXOTS5CpkfS/+ccZa8x4hyrfOg7vsT4enS/Ji/B43Fybp0U5ZNv1F9pv17e7\n5e94/bfIMw5FLM08DCKnslExzosuSms9RV9RPC49OTSgUFySZv/28/VRPqCi\nlwesRWGxgc7Yt7V5zz7aMaQvxkePXVuTn0L4uEhAQgjb96zYEFM4MfH/4Ubp\nTYNxwbhYoLUQhhwEzkpQwFlXtawKmZ8LEdDqvGnKv62eK7lv7KDRX/uGsFys\nz9yPMCdRDk/8DTaToaeIx5jbdH+9n4RHFuhyYdKGR562WRNZgkwGx4oiee7w\n8fyIsMjlu6h9oen17bj8EpOFJgwM1oHbZj0pG4+xi6cuaQYx0AjRMIdlJfz6\npUwe4tKld35ranh0uHi+RgHWiKzpj1bnRnoRtUYVyy3njULWkUNmB/N5TsQd\na35vN/dgchcCF79VFEelB3NzXBWau3edqqu593mNNhhvzU4n+LZmURKHLppX\nMiG1DlPbB4aM9TGqmRJuGPbG2HPxqZuSN8Qf0lzpaZuIuWzoPg+UhvFs5YM6\nsClYrqvNhZJY9/8ow77mDmYrIBj1Is91cUzed/hF2wSY4gQc+L6Ut+Ij09ka\nlLAg\r\n=vm3c\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBba7ioaGZJ7ZcRHR82hHMs3kB2gR5Tjk6CN8o6CWmY2AiEAwScSrkbKhXBovugpgAc2nRBeMuBcZF+v90V/qL2ySLk="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc5_1583254549706_0.3697129801521031"},"_hasShrinkwrap":false},"0.11.0-rc6":{"name":"graphql-migrations","version":"0.11.0-rc6","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0-rc6","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.11","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"15.0.0-rc.2","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.11.0-rc6","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-O3Xa+X+Blp+LnlF6XHK4L+vHfIGm7g7nyacuaCwpCuEFxjEfF2DW75f4KmILbgwMC1ebezumnu1VoKQ/wWFdMA==","shasum":"0630b4327cbda023713297988bde22e6001b2fba","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0-rc6.tgz","fileCount":122,"unpackedSize":270509,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZX3ZCRA9TVsSAnZWagAA1zkQAKGkcklmgp+fTerULOfH\npQmGqR3GvAl0XfoA+dxZeT5oNpBB3DjMASCIV6eqBenOXr+V6VgpylfVArc4\nqLziV54pAnRaRyZuHZNzPcB+I49i/quV0xkfiUyVYfwNohmSxMEh3lDhsIct\nCM+LMshiby02Zb1oFlAj66CncZ8JHwk2xRo3hzsNNI9C34CqU6T6IgDlGECP\nWk4ZHzqXGrKPUrvb7RzR8qbvccOglURgHvDk1cTY7i+v0k9ZekO4OnwY4q8M\nCPGbVO+bxwpDeHiKKMBYR67p8GaRql0hss+ImKSD7aKNi9O26juAijSVHcam\nsAxNiQK9MYaVbRsEILvu36YfE/BDiIAI63/vhbOlTJrxqyqCF63/gGspa/sT\nMP+eS9X1AoU22tL9eHzh4AA90doVDyL+cVDeUn69scUKa1QiCi1EEZbDr0ku\noStANJYWNxqTYxW1zUjgzxBUjsrDTkZx/HsW26S9uO5Py1Pa9ByrDpRZ5bJx\nfjP/0EQ64llVGm4A8O03yFxj2OAaHALa38La1xkTJWDeek5HmQG3wWJjKNCo\nnOOm8sE9dMQzuHNuqXk4AtS60hAlHp99qS0xpDWgFL90cRYdZqJ790b7N6Rr\n1oSvdNMSXPUg/l/xh3vKufY4jDrB9+tuJXc2YUdqcQXlcU/W8s0rAVXzyqX4\nBfjY\r\n=1/s0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDI8SvMRmXOIrGFckInnBNJHFxihFSCDC8+eXXfMqxUBAIhAIWu50McvisGOS47s2nNDxQyItjDWG1xc9AhNFV263bQ"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0-rc6_1583709657453_0.32150461241689876"},"_hasShrinkwrap":false},"0.11.0":{"name":"graphql-migrations","version":"0.11.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.0","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.11","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"15.0.0-rc.2","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.11.0","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-y+cd8KNKixIEWoTLaAMncGtQKF7BAffUpdRcVmDs5vR9BSlGFMIO8SuHit8VHnwBXoL90hiJVGCmZITSIr9y/w==","shasum":"83dcb6f47a5e7e473d8c535de2b0804bc2283d3c","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.0.tgz","fileCount":122,"unpackedSize":270501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZjKACRA9TVsSAnZWagAAAt8QAKJGE90h25hvr1Qp9hBa\nwm7V8JyNeGXErKHjiwguSYPFyskMOxOVYSobcdRxORjMOVR3zD8gYfKW0BHu\n1H9hAFfbQo8gcKX8qO19dR9H3EXRDIDvy5TRAJGMikem6BRkqvXXGxdezU5R\n5YAYOFCLpLeP5ffoPfTqZj22lyKqxVJZ31c+46JKILI1GdyoNJKV6SP1bgPM\nzql6LIl7VWIKvuMfLZxnni3Juj0zqEBGDsVbpFAoiOIP9kT9ukCkSgRJlzu1\nJ32CCNv/QrODRlqRyM7ta7iKFa3lEsSmCpsPR68WFCyGzP+GU3VfJfBCr5vo\nXzd8FwDynT0QPIqnUE+ScZV5i+HWeXa3d+CSAy9KUIfbdZ9jfEfNwvugi9z7\npyNRuLvop9AyeE6PT/qALnZuTrJjHXm33EHufCPZuxQFNnJ2oDDjHA4eavki\nHBFowPa1JJkVh9MdzyweewlkeZk42W7ezbWs59qSqr89+NOKGZd79T8/dzvp\n5rTM3JkYUFHHYb2WnHJVBXyERTt6WeO8OTaWYTnotECpzZEUFzmRHj9lR4kg\nC+SLz8Mt6gQFPuj8x8fod1OPlvDvkgMbuEaE3McWIAUmRsmrnQCYQ2W7inNC\n5n/S6kb9ikzMxw6w9nFBE++n48auCRxEeshhXsdTXrCGKMYbAde7T0vjySbQ\nB3CE\r\n=SRJ9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBhJZZM57v9HiZg62rNBUR0jKYRxF+IxV3f03WLlTObUAiEAqoo38Xh+/MQHtF0rHdHVebiRxPQgOC49qy34DtY/ob4="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.0_1583755904228_0.06881415956991987"},"_hasShrinkwrap":false},"0.11.1":{"name":"graphql-migrations","version":"0.11.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.1","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.11","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"15.0.0-rc.2","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.11.1","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-YRFz+IHbVtmLehnSvsZuShleHwdBAWj9rt/QIFFN+ofIiQstHGQ+gX3iEQ68JNRxKm4sWK4qKgvOZ/8VOI68Fg==","shasum":"54a5c6cb144c8597b10725ca115364294060048a","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.1.tgz","fileCount":122,"unpackedSize":270501,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeZ6GdCRA9TVsSAnZWagAAEdUQAKQNOKryLSV0Tt5fDlXn\nEOtD9VyAn1+KLS2uZzyocQD+8urHVNHMDaZC6grY9INSIK7KV2VTlJ+yctzY\n7d340uwJGX4AayB0WQzTIjXM/5mQcsv1Pdsfhiy9XJ9hqQMfSyKN5t6HZ0Ns\nWWLkhWnCk7XucMmKpqU+V+g4+26qtKyTMPgWPeZE++OxYG/VqiOOVqGvjdP1\nOGvjqhwGOTYtEP4uYjJo5zuF3SnkhTSXzg1beJ18To1cpZ9NBMCFT4Ea01N7\nQQ1sTVHMU31UIaF1lVqQ/CCfAw7w55P/K2Fty/o61aQlgJn1aqR6icr3kYK/\nTGr7V4HCAlN+mG5lxrOGmb5ui88x6zdGwq57l0icG5Sbglv7TLABXLL4fMTb\nxWEBcYiCrKZhWFK8g7eHPEPsBwU8Y1sDPgp0ZD/yNG3bk1JofBru94YGRWOP\nK4o6y4jW0oZpdAEES39puHiI/1JpcWqZNbxTWLDovhGM/keFx+qGpScmzhZ2\nK6wVvAo5JQBosbEHlrEct4dtucINZ8cyetPLrc1C2+m/CPFXvi0k+GssVpYN\nc2Og1UhWhbkDY62Kgn6prmUjODynp+ydfDRjJpOicrfipFIsMuDO71zHUmbB\nDMGKuMJWRZD1kYB5eDOAQtaX5szZkw96oYvCPQtTQHB3q3HPY1a3UokOVZTa\ngMJ7\r\n=pOM3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGWdyVl7A9TdOJ4clgr4vTjXmiiDcxY35hCzaWKdXE9gIhAJPxsFTWJnxWdXvzxOhoueSP/DxZzsPCl5krq9MqYkDo"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.1_1583849885342_0.06912585419907069"},"_hasShrinkwrap":false},"0.11.2":{"name":"graphql-migrations","version":"0.11.2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"ava","pretest":"yarn build"},"ava":{"files":["tests/**/*"],"compileEnhancements":false,"extensions":["ts"],"require":["ts-node/register"]},"dependencies":{"@graphback/core":"0.11.2","@graphql-inspector/core":"1.27.0","case":"1.6.2","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.11","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.29","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.6.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.11.2","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-Sd9NmiZuSrAZDRCZLZatnR5xXSK83Q/ncl/8esmSHUvDGkMuXiMWcd9E9n3Rr0JGtKwoVYR9tkZJBNAHRVp5og==","shasum":"2b9c7f05ff7a32bc096d298479fcfd48dc07dad1","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.2.tgz","fileCount":122,"unpackedSize":270496,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeaSwFCRA9TVsSAnZWagAAsZ4P/iMYhbxYMTjfqHh0+tmZ\n2xdhzK5gwxebwy7/8dRMDNDp3glcWGF+64L4QDxPfw4DIxRxCRExMsVNvoTH\nZLM2KXKK5uNcrdvnvFJZ4fiocx3Z6or5QjrmiKk7Jw6fW+fjdq2cYb3uO07W\n4LOTzzmQJav+YugXINoH6pe2zfdszL6Iz32U7uyZr9YYJ7vpBKs5mqFzFJ+P\nZ7LRh+1MPN/6KVNA5oZiPhsvy2dNImcQFGk5VHOvsvAq3ZDwmRFlR0PHRwSw\nOgPvx7JseU2+vNdwmKqMwRPQQh8KB3mgpGIHvzgus5Cymb7+kjYqXXePEL51\nJ+Pld2OqvFiCY/VWIvh0JQC5eejwql4YAs+lRcIB6uqRdL0j6gL5mutDYNux\nCq2B3YKHHk7UQ/jK66vjbAnOCbiBeOSd8DYb+xOPYTOC961E8FY2mSiA3hgn\nCMI7exkJVrw6yoOACb2P0A9Vl5klB5wt/mXNEmdYIlVXQvVF+xyzZ+oGSRn+\nOqI80G3a99kv1/ydNXRdSZQeGSOawXhKrUr7QOk4TV3jKSN2ix65+wPdIzCs\nTazYAS+5sZ7eeipLc8UvBC8id/NlONYe+zBD9/xolPLjT3/U7DvqvpRmvi68\nHHRmAE8xCeklOg/aC9dbhUKyrNTB66w4x9hMxnPLOaZGOMxzM8mOJIWfZs4y\nemTy\r\n=ziAn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwE0iiyuvn3YmTqUhsnp35xUSJZs7/iGKLerm9QIWlqgIgZbp3Algj1uH2fr56++X7YOHxehY4DeBWgVTSmuIxU+4="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.2_1583950852785_0.25286103175957675"},"_hasShrinkwrap":false},"0.11.3":{"name":"graphql-migrations","version":"0.11.3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.11.3","@graphql-inspector/core":"1.27.0","@types/jest":"25.1.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","jest":"25.2.3","knex":"0.20.13","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"5.17.0","ts-jest":"25.2.1"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.31","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","pg":"7.18.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.8.1","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.11.3","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-kl0UbzcEx2krUKhKuYHemmDj7xUDuvKQHJ4/J499fjuWE5wVDwA29W9siFMOqxA9d+x4y++9xZJuR7Ky1FT41w==","shasum":"929cd3b719496fb0476fee0b826f8e94a3b212ef","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.3.tgz","fileCount":125,"unpackedSize":282833,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJefdTZCRA9TVsSAnZWagAAaawP/RhcmA5EkQKtotkr6qQA\nO6PGOEj4GSzRM/GbLjQGBIky4JF/rnRnLWMd9IgfF6dtb1KSPk6jGxStaF07\nlKMlguIFQuUEgf07nhvh71fxYDIA1bX0FBEu2unWxpRNWZpvLkw9KCHqgwjV\nUIQNCEx04cwKT7WNikjVyAGsSbYZpvFs5osV5iiiQHK4s2ZC2x8rAupRX23T\n6QIH6WpjAgEFNw5X+WR3CfJSNfSYY7Oi8c1/piWEyerWW5Ctxv3ff4U2rfbU\nicq7NBZVh+1xGmAh7j6Ek9vIpgwpvQ0adQsDRDDinWl2tj2zOtTHZa/0589c\n9G4MAjKKTsEGzS5GJQvCDnT7xXGcwcc7opxRoOSLrPzzW16U4xKQP+wzrHP1\n0qPEH1L/AJlqAA4ao7wYiJKzF/eO6Kbpda2GhuauhageT4Puy6JuJ5rXNCp4\nAsR2rRucYhA2fNcbFycWupLGk9b6UBlSnoE2X9Oz/gNXPFi2pSz98SkoLzGl\n2QNBeba4fwtGd6gmKqkS/oO/xmK4jAa5qYEN05AAVATgVdeYYl0hqwtO8Lxq\n55bEA0+/5z/LOwHeIW6dEXuMnbuC0Ud/1NiFtAwumJ+RvRRnFNmNY0ZBP8vT\nJ8u4vgj9C0KClG0brnPXm3/EriPGwjt1YmbgQQjObabsuFZAgVUHzEirBuwY\nDv8w\r\n=yyrf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGXcCZBCeoX67Zs11LUqfpObSh6OEsUjdngy6o2I5EeGAiEArcQndzm1rDp4v263eOLE5Y0Ny3/eS0t62P7IYg6VdWU="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.3_1585304793364_0.21336220550993645"},"_hasShrinkwrap":false},"0.11.4":{"name":"graphql-migrations","version":"0.11.4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.11.4","@graphql-inspector/core":"1.27.0","@types/jest":"25.1.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.20.13","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.0.0","ts-jest":"25.3.0"},"devDependencies":{"@types/jest":"25.1.4","@types/lodash":"4.14.149","@types/node":"12.12.34","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"4.0.7","jest":"25.2.4","pg":"8.0.0","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.8.1","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.11.4","_nodeVersion":"12.16.1","_npmVersion":"6.13.4","dist":{"integrity":"sha512-zYICQ6gAAFQI152cPP6Mv9SBnFkncVbaCA2Uoe7zEzVHfE3n83svPcPWQ1kE7Utp94EN7nePLYJKk4FbTVH0yA==","shasum":"ac4b11b3703b451507440ab959238c871bcfde4d","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.11.4.tgz","fileCount":125,"unpackedSize":282831,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJegxcLCRA9TVsSAnZWagAAya8P+wRt8fl43NdjVJxwU4vt\nGNuXVwW+SkBqz2+ZDl+k++opAC+unTt+kaScdAKlMK6voxIzvCTbwf/RA9Bn\noYB0sTtT4kBQci7D0KuZJGCll17U1L2eHBc5bRSpqh6kqzAmS2zn49IxB6Qe\nKofLxSXT3ccM62G/Ji0zw7RHWvpMSjZEtWeAjLtsFgn/ovnXEx0V4jWqvw3H\nlaUOdiJnaN90q7FsaoJlk19/AsAiwSSgkPy/ZjL/8pXDgQuBefG+g79j5A/M\ni1fXWBXU/tLkUfZup2ZQ9Ga+q4CNmyU9yQam8xUT008S2EgMtTsF9vgi7i/v\npsn/RMpSyhH+cVisM8OC2TpBfjpaPf2R3iiWRvR8zKnzMVFONQMlpNs/8l9n\n8XPyVfTR59WupIGZbU0HhOUzJtmW1h8K0dpvzXToHeJCSy6Ppb8j63cf9o41\n2kYB22kNMopBaf2DVfKH0iM1a5a9kWdg2Z8wwI81slfP7/rMd0nmozvdGqF1\nXMaeCqJKxVat5W149AtAf82J62WnwI1BcgJTbBkgk8TZZicjdXru31/odqe0\nZG4rTHQ7X1crhxWFFwX2SUgghLWUOANciYn2XYMTyvofKdoikncm0TSG9jVO\np5kjYx9mR0TOxCylh/XBZOteC2vhhGvjwOOVV6RI2KrKW+FIcAme25CF+Su9\nGCEd\r\n=BG3m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF3OOTuaq04ROovhHnWse06I96gPh3TK1PwIr2K73huCAiEA7ItxJqxMzGZcGRnGP6KiE8U70pucpq4X2psZN8NsxmU="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"dara.s.hayes@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.11.4_1585649418658_0.06893911283738574"},"_hasShrinkwrap":false},"0.12.0":{"name":"graphql-migrations","version":"0.12.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.12.0","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.1","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.0","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.2.0","ts-jest":"25.4.0"},"devDependencies":{"@types/jest":"25.2.1","@types/lodash":"4.14.150","@types/node":"12.12.36","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"5.0.0","jest":"25.4.0","pg":"8.0.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.8.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.12.0","_nodeVersion":"12.16.2","_npmVersion":"6.14.4","dist":{"integrity":"sha512-Mb0akBtfiUlw3WDKSTKBHMQA/LmElJwPPEwye4E9UzeO2fU1aqq+TD+HLnzg8zIyO7hLodIXhnzj8VYO2zhfew==","shasum":"f97a3dee1f6c961c4a79d4b531919818ec3e177e","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.12.0.tgz","fileCount":125,"unpackedSize":282830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJena/yCRA9TVsSAnZWagAA3bQP/Azcl5mGOhgtoo40qBCX\npgRTWwD1MpbaIcybqHU1FmztFW1NIjC+QiR8JpGhA/uaQZUGjvAYFBVLt6sG\n8odnfzRAG06Y5Nt/+7cKyFbWA6qq3fjE5UHEl0qngyQsh1H/pTsPXYal64Yb\nloJwv1tzOGwDf746sVPUrpb4QDYBnZMyrRl5vqaDpbDuLAh3+l5EXzIfeh+V\nEJgMThZ0z7Cmro+lMc9NWRt7+7w9EpmjBWBWMCEAQCPTOEbgYhy0Nzpn/ZC6\nc6WRi8km0eZAF4V5dSnCosLTJQHCig8RWc+eH7mKbdtYiHfMHbR7ARY9DKMq\nu9TdRHxmdq4JHHhtIcT2QMDV8TuyJDroWR0pWdUwfJV6rWTg6igaCZ/ZzfRd\nhvofDeX1SO9QCa6O776zgxrAFIhnelGkR5vhF0deTPFwgdRJzgRVI0nuLLl5\nQbgdxEvMc49CcNpoVMgYGLLKujq6lf75YdglpRoQmdyDtXhHgaQNqi8f41zB\nSITn1kK/rlHinoS9x8TGYJGFNEi0D7KkTu9lVGPCq9rH6Cy2n9jA2VntU09U\nk9zSgyfUEBp2S5NTyvU6WpwMRc+q3jsEcar9e7HaI3b6vKsXYrmq4CmA0LeB\nD9t2WcotRSZDCtBn7qkYPzlah0c6yWz9jtj7vW1F1iK8Kb/VI0mnpas8D68Z\n/XZ2\r\n=bNg7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFqxpZU6LelTC5Gq1smWY6CVKuTn8GDN1NzXMxn/KCO4AiEA/MdfycpOiJ/TzbErKVtUNvC8Gj94qhvBQmne0HqTyMI="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.12.0_1587392497995_0.5846522680005308"},"_hasShrinkwrap":false},"0.14.0-dev1":{"name":"graphql-migrations","version":"0.14.0-dev1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-dev1","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.1","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.2.1","ts-jest":"25.4.0"},"devDependencies":{"@types/jest":"25.2.1","@types/lodash":"4.14.150","@types/node":"12.12.37","graphql":"14.6.0","graphql-compose":"7.14.4","graphql-tools":"5.0.0","jest":"26.0.1","pg":"8.0.3","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.9.1","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-dev1","_nodeVersion":"12.16.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-af2i5mT+S0eBytDQa/UZtY9fywMlSMpV4KH0HRA7txjstxgGA1P0G+j3CGp1Egn0wNPzu1FW/0ztZ2GHH3EvUQ==","shasum":"75b9d636e18e5d59bd8e659349e70f7a3e529af8","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-dev1.tgz","fileCount":125,"unpackedSize":271486,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJetVb4CRA9TVsSAnZWagAAZJYP/2Yt1ADi9579CEwDPSL4\nB6VRJnzvC2zxHtqr6s5+AvuHl7B9BPByh3zyNJLTjzIEEESso4Tf8DW9/mFv\ns0wt5ydNT53QC0vrxpg39mNFgQsxjyeKeeiMq9aUIQ2G/BXh4VdxYcq49pl3\n5f/FPPFSutnnvcfHjJ5ibLMmBK8RNK31/U0xRw4b9cFpRd7CzcXQ2SBPpN7J\nEjeSLS5Vwynekc7oUh9eGlHBgIqlIcr39EypbVzWw0lxon2YNby4qoryvPfO\nYq87jW3G7f/lSKTVez1bEWnCIxQR6dbUBi1zmvrnRTZikN7neaBklOfeX/SB\nUEC7axEjtRdVA1xTJjUBcDSy4G13T/TGDoAvUoIEkEofbZprL0Q4JDnTpNaX\ng7FwEcoVfgGREKMH+1dfcyh5PLRQqZ30ofrEBCfErGCRlTyl8Yrn4nbSmulK\n1Tfibg6qnAMehd4ofoqR45+EpJ65d+5Tvs9lSjCFlpXWzoWiR/WaU7MGqRSW\nwURaUQPA4wc1gu9vl9a7BftAbrzS36d2lkcgZDgXj5BY0+V9H5Uxg5e0mpZs\n567uy5tMBNTcUEyYTxb55HgZCdiogeCdaCp3V/Ymzs5ZVzaCpHdc6Bh1rNuH\nhb0iMiWthPj3lHj3NDlM4GULNNO4jJcTnPOlDv09njkfE5CM28Y7k/2E1Emd\nNuS2\r\n=dpy9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB7Arh5yxt+7e/6/2/0savalbRqeHeisFtLr3WdsEXLYAiEA7ohWyReFSAm5flCnPaDaktz0mAnA0XxfjFiKBx7q73g="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"ephelan","email":"ephelan@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-dev1_1588942583732_0.8456143728254415"},"_hasShrinkwrap":false},"0.14.0-dev2":{"name":"graphql-migrations","version":"0.14.0-dev2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-dev2","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.2.1","ts-jest":"25.5.1"},"devDependencies":{"@types/jest":"25.2.3","@types/lodash":"4.14.152","@types/node":"12.12.41","graphql":"14.6.0","graphql-compose":"7.15.0","graphql-tools":"5.0.0","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.1","tsutils":"3.17.1","typescript":"3.9.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-dev2","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-We9qHiEC+SWtlLMU7vxWLisSWzoblwWJBzJ0UmCMr4K2ZDK1/Y9tYoA0fS2JWuVu9btrAF8tDb0+7G+dfUkgEA==","shasum":"c2aa32b7d76b22881c5ac0b9616c790aaa08c856","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-dev2.tgz","fileCount":125,"unpackedSize":272520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJexqEiCRA9TVsSAnZWagAADNUP/jEG5NnE25FGSWRShi0V\nv8HfqftfVb/glF+JMTMurEo5f6tUrbTXobVkddWpYB+fH5kUd1kjp5JqHJ+n\nVZheHKZzNIDbT92ljDE7whgUS7H5ieDpjqQdbHPG6bwKpt0fD1d6ZfatCAfb\nQ+gKBMBym7s8MG4BlPzqlCrIUWVLvNYdSSPAB6LPaH5vDMg9hHpuuwiRImYC\nkybeEqZhW8KIDyQU5Qnehmy4iQ9Igf4+Q6TRhAbt1OkxyqxZLHKCtAR8BQjc\nTOrBfet/2ZeaMtuB70Y3U4kLGL2PwK1ulqksnXCnQ5iPO5OuzEFfuXkDPMOs\nNMm/NkawwU+Qfe3wgWtv9SMd/oBy8fcdXONisH4/aBCYw14cMo6UW4X1w5re\nK4BNjvvtZzUVzK7zodL13Z77YjVDo3mqI/o4RDHTNzUKgpGR7BP5ncFPVw53\nX3RggiyxglZWTtg0is/uUjPQKI6/kcXro8RXwUACl+X76HBUlxxo5XKV6J3O\nw+ju9ZF70Lqk0DDsDsrC9dck2+hVpxo5DLliAB9iHi+OttO+K7CxPpGlz2nd\nLWfPYv/apWl3XkJ7CmSrGNr4+1VUz0ZJFsjM664QvWhu2YnM2LwfjNcrieOG\nofXBmrZDBsHFcp8MSi9eu7lyLuxLTOXPTxIRXywIzbhLPiFfofp8e+OXmeM2\ndDrd\r\n=NWEx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBDKq5WflAeGvWYu0dyEFgDvER69ISCZ7f+xUdioiNRrAiEAvQVv2haRS4RjODh+xW9QTCmeTYKvu5wn4rj47FDf/e4="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-dev2_1590075681581_0.4649699867233119"},"_hasShrinkwrap":false},"0.14.0-dev3":{"name":"graphql-migrations","version":"0.14.0-dev3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-dev3","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.0","ts-jest":"25.5.1"},"devDependencies":{"@types/jest":"25.2.3","@types/lodash":"4.14.152","@types/node":"12.12.42","graphql":"14.6.0","graphql-compose":"7.16.1","graphql-tools":"5.0.0","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.1","tsutils":"3.17.1","typescript":"3.9.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-dev3","_nodeVersion":"12.16.3","_npmVersion":"6.14.4","dist":{"integrity":"sha512-XqgJeE5Yez/ZHZ9ZzJC90z8aYChjoPYMqz3RmxiXXfgE4TpUBD+eT33kEXDf1ZxW7eQBBsNluYpxTfBEsCSzGA==","shasum":"f90b51e713074f5aa8dc2521d5c2aa675e758cac","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-dev3.tgz","fileCount":125,"unpackedSize":272520,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey+KrCRA9TVsSAnZWagAACnwP/3VBjISLmTZfpJEpHEau\ne7Y18j/3K5wxUmCz6+AogRPMX12n28YsBJYfRF6KLtiM4ONhUercPDIccMJE\nAjsK4pBDq5rgLGGiFL+9rk4pXQePUjXi9zYNrsLWjBEJctb+Xd/g/gjep1KE\nHTmyqrf5uoUkGlSPdWK5Irncx3i/7+63H9XGf5sT8NbnqNOfLTaaD+QKbGzS\n1m1L+SaDdAx4hnYig7aMUC4QjScxnEdcMyn+a0DXhE0fB4DnDHdTXoEo77Jv\n0UMp9l+Bjs5h4pzN+2L/VJ/af3IJCpOjiiWbmPaoYNLdYgeL3hIfn1LVuCJk\nnw8wzf+esgDlKUwyrWWuDXxZYBoExgvnhn0uxWBGRzS8iubmWHwoeV3lbcQU\n59k+vM+yDo75BoG2uOaq2VtYB9hLeveyf1sMxKNRRQAzpSklHZYNEr5Gvud5\n1+JVwEwEXLTy95gDAN/I6Ue9HxqA2dE7zNMuSD+WQyVF1bTL7J7/jYW8xevG\nHwUAoAsZqARxo3RkM4Cqzt32rHbt1QUijHobVpaQXzMhUq8UdlTAVEMdhpOp\ngYE94BRpoSaN71GX4IN92UucRgrS/tA6FVk3tDPjZvVIV68ScaRQKH4K2sc8\n0OYhn5GttZ9fLlJrBFxY7m6QhnyPWSJnKzWwS+JPs+b11FBjWpwA0IoTc6VR\n8Zfj\r\n=JVTI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAjAM+CxehRhZoi69ZqVuunrW0z9+D0Nkas7M3sTfpunAiEAjO+nu97El8s491euuoNIMou071NaGwLgCaHk7TukJY4="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-dev3_1590420138975_0.4659158057266757"},"_hasShrinkwrap":false},"0.14.0-alpha1":{"name":"graphql-migrations","version":"0.14.0-alpha1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha1","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.0","ts-jest":"25.5.1"},"devDependencies":{"@types/jest":"25.2.3","@types/lodash":"4.14.153","@types/node":"12.12.42","graphql":"14.6.0","graphql-compose":"7.16.1","graphql-tools":"5.0.0","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.1","tsutils":"3.17.1","typescript":"3.9.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha1","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-JbLCnOOSNAjuEe29uTOa0BoB+aPdTVcH+OBYczB4RJUb7XZrXgAL15umQzT7VSLcGi3llD6iJtpJlQ223PBu5Q==","shasum":"051ce02f3f9a18fe0ab318f58f46ec75fd9156a0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha1.tgz","fileCount":125,"unpackedSize":272524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJez/XdCRA9TVsSAnZWagAA2T0P/3T4UDnwc3Jy+vWPSjC3\nmCfBzH59FshxNHx+lFp8G/QrXiF7t8s+J6lxOWLIlDYXr6CcA+e7DnKIZh/G\n2rveMchOEH4YzV1hEc1HR97BTIlNFVyqA78jbT+mF8P+8rBNbW6AZHjvSFGg\n2le2+2AwXLCv1phfZgwHq91wUbVPchV7d27PCpdyZ5ym7YONwlGiQDyg1ZLV\n54HuZBI0uAxm+sayayLxrpgTUPXKviXGKbx90jAq7iBJklmA31d11JPV7iIy\nPSlmLP0O36rU2LCplUGo7Gn/+CaL8DsIWjs9+lRuChJp9IOqFnRAiWIA4/sh\nZu6OEhL6VRCeLrRleqehE6Lse/sNaORTYjOJdhknehY5xvNaq+ptm4y/GEvr\nO6l/kj/Vd+NabTeFELbsbhP60GPfDSA0pyIFWnY8u33J+fNjMnLU89b6Uzo5\nZoYlDglG/helY7Em3+5wNTsIEGTtaXG7JoL3l0w92SSJmsyvsNvDoQpT+pF4\ngEWrd+yQpz6FMcGOCskoK4ZFfV5X0hc18OtuCu4wr8cH+oh8TfC9LUsOqD6P\n5Qgkqz1LZaKISqFMJjtsnuO/iCxtOqYDbr4fojhdWMq/jGz4zLFgKLZqA2yB\nEMnj9qbFFuFccr5xqOrd8sN88ca/HPtkywyoG5WB9vnu45MX+K03ZNEvOf5V\nnny2\r\n=Zt/j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtXl6KFZkUfT5GTC7tJgBgKmPDnzHowaVyh6CTVRrz3wIgJeHClZERazT4aV5VOVwwhxbH3d69sd0W8V8v6kqIpFo="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha1_1590687197251_0.23518778082067926"},"_hasShrinkwrap":false},"0.14.0-alpha2":{"name":"graphql-migrations","version":"0.14.0-alpha2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha2","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.1","ts-jest":"25.5.1"},"devDependencies":{"@types/jest":"25.2.3","@types/lodash":"4.14.154","@types/node":"12.12.43","graphql":"14.6.0","graphql-compose":"7.18.0","graphql-tools":"6.0.6","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha2","_nodeVersion":"12.17.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-9iq4gTRjcFU9ijrxqve+VZmER54W505iM0rBwotlrEUt4hMevBjiLokKFwS/p0YcMRQ2AFW7K+8uvu0BbFepfg==","shasum":"26d1bcf69b851e507e599bf16fb090ea09d1e5f0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha2.tgz","fileCount":125,"unpackedSize":272524,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe1m9CCRA9TVsSAnZWagAAv34P/R0SBS8rlnZVdx9hsxdG\nO0QTQWO2ujIq+rrLoU/vtLNKP7xJW9ZssYoy1bM1INuKIuBBWVuPxbJsV6tF\ni4QhW7MDAhLk78wyqwo6Ix61pLF7HgUuckUIQbDsRATQQhJthwg6YItg0tYn\nMdCKbkM4N9gtE+fSckM6W2Hdfhhq6eUMeGQZvGRXTJH2O2PhgoHJx2TUaRJ9\ndmyx34tlvc2Fbi7MoUG5PlEs0dHQd6JgkTdvKSOj32uAkfyJ5T6Ij+Lrtker\nzYsbhu4WMbbE39RQCApTvqFPqPg/AYnKv0FeSjtiABCt/qz0p1ir4PcVEZkG\ngVpt93Lw531MBcDigRLnKhj6T4UpIovDbBUynldgnuVMUuQZIaVDeJJriAWP\ns+SLZjgYwVa8MIULAxFUxgI2McLhnUgEXOb+g/YtIo/EjmNFl6INMA3PgF4a\nkMFICuf+5d+7Fgh6eZ6rGIbLhR3ln0yz1GZ7wIDlxdhvQJpXIlslCDSo1Jr5\nLvuW7EZzcjy3S0SA5xPuUMrWZFwPxRRfKfi064l3UjmuhLtURQgwas4c3igt\nM/iHWuFc4sKXHdhkCQX90mnYn1Hr+ZKbbklb//cQnoC+d62yYYJIbHNiVrqf\nIm0tuY32O9Ama6xmG7IH/tEeafvtgl8KI2hNirys6EyTy/efJDr2O+CPV/Du\nAIBF\r\n=GV7A\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCssp7lvtlNR72ErrMNli/bMSL/Lz12LZdl3DVxqgLxIwIhAMbV11BFTLqmVRnDLf3kzTLYS/KNDr7+02pTEXOW4qrS"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha2_1591111490496_0.4396272607962681"},"_hasShrinkwrap":false},"0.12.1":{"name":"graphql-migrations","version":"0.12.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.12.1","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.1","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.5.0","knex":"0.21.0","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.2.0","ts-jest":"25.4.0"},"devDependencies":{"@types/jest":"25.2.1","@types/lodash":"4.14.150","@types/node":"12.12.36","ava":"2.4.0","graphql":"14.6.0","graphql-tools":"5.0.0","jest":"25.4.0","pg":"8.0.2","rimraf":"3.0.2","sqlite3":"4.1.1","ts-node":"8.8.2","tsutils":"3.17.1","typescript":"3.8.3"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.12.1","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-ZDU/RBRMScJIXK9VBzEGpPev7Fu0ijVZN0QoUkc99Mup2VfpPJhmzv1kg0DrZwprSvbpxaKzIHe8e2KxdGvhew==","shasum":"bb9dd2d258b77b92f6ec5ab969d1df13361dfe1a","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.12.1.tgz","fileCount":125,"unpackedSize":282830,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe2LYBCRA9TVsSAnZWagAATD4P/2XWFFaz6yc5iRIpuc5l\nUkEU7SlSTHcimk5UnSp+oWEhObY/2lH3S3/QCssytvtvoUrwlnSk/RrcD/d2\nZYO2vlbdjgEpLqZyDPj/aNfCvZ5rHokoL3/2tvq0eV1liunoi7TmoB2TrkbF\nZgPqObLZ9CQyz0KzZf3WrlAn3MHH9F5MxNsSZUsd6qbKmfG4xWk8//Tye2VF\nvz0sFPAy1UzjP34XkGetBlNz5fW3G4AYxSB1WC69IoSlE6+bltRpMWIunJkO\npmdxQXi0m/Z9RVGKCu9+MW8uM3OMFTSQlAWoXspTI8WqyvLpbbWbRNt2fqxG\n5MsJtZPv08jA9mvGn+3kQSz8kD1K1xPGLg0GlIALAh6mZPgVK9enWt+GYSyl\n9rUBeHgi1Xb9rSidfrlsPQTsUpP4hJkIwyWDdYN2ET6nCSp0zLHfmgGa3cZZ\nVDagF0DSnTC1e4bzN0XWMqtrxbKt7Ag9JdiLxgOnayTCySn7/G0o9El0phyX\nk7L95nOlSX0DMb1a1bikkt0+j4NfNRefMGegX8Z7rBSZwPRCwF1iCjeXdzxN\n0jOnU84ixUIeWMzUvCii+hTq/abTkEsMSIKu00E3Cpzc6O6V6zmutBfd1LFc\n30AgxmdZTb+ZAAE2dvDqbSLLOCoOUJDGeePTwVw+VebG1GVFPs5wSFZQDlYC\nIBkO\r\n=BXHb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQDBVCBlFEr+6toBc8+uYHb6/B0n8hWF22N3G4esqF3x0wIfIloyi3IQPDGnIbBHMNrq6MVT+rh1GjYS4/KQeN6vsw=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.12.1_1591260672919_0.8178374294299946"},"_hasShrinkwrap":false},"0.14.0-alpha3":{"name":"graphql-migrations","version":"0.14.0-alpha3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha3","@graphql-inspector/core":"1.30.4","@types/jest":"25.2.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.6.3","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"25.5.1"},"devDependencies":{"@types/jest":"25.2.3","@types/lodash":"4.14.155","@types/node":"12.12.44","graphql":"14.6.0","graphql-compose":"7.18.1","graphql-tools":"6.0.9","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://github.com/aerogear/graphback/raw/master/website/static/img/graphback.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha3","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-dFuDXSpyhtqwQFh5i9YtUKsx9k82NjEKsXWokjGuzj/Wy3kFrEtrwRNIgWPYR9tGDWQYDO0PC+o1Yl3HS96PpA==","shasum":"2b68c79cde815441ffde08029f93bd0807b8fbac","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha3.tgz","fileCount":125,"unpackedSize":273744,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe33VOCRA9TVsSAnZWagAAIgUQAJz9KdMaFH4+UUt/P50h\nvpnBCMPHSIGXjqiaxpXHi83CZxnkYmS7BZmfkKAKgE3H+Ku2Ef2THEluIul6\nTKqoqm4Kf5a8QiDfwUuhgpZv0W6VZG4MRQBB2WM49OyJI6YhGtOMjovj2UiT\neUSn7VpmSXvBpvKRGakCNxT4o7vHx7zRcC3yaaUY7g6jF26YVQqizNlqpStu\nPMYbGHme/hQCnvW2Sev9CleCo6X6QBGFxueAybsTGjPheciihVI/4Y8GK9sl\nmrvGFyiQRKC70KXPi6Qb/tSirs+dAZUa/r66MvRXEtqxM6IgM/zWlrdxfFAd\nyAqvaT1CkmGQR/6r+S+6jqJ+MRLV7KhWmLluXB3rLN5Y3lx2OkHzshTkpRKY\neraJ1Z+xYvrpGdU6ZgWljfwTgdSwae3oczOLPPrAk5+W9ZwEs+BdktyaeSqP\nHc2tvmWtf1YMHjMyO4rL/P2c4mOHRxBY7mW1IRrw651z/gGyqL0cLouSOMoj\nhCIvZ//hYmYZOxg7eN7hef6nMf4LVjKG98gszjlU9oOROiFcEdbrzbCpge6X\nrsYyxU5X1oRlhIvcbQ2VQ92iRg4fUT/uuemRyNRubVwnFUKhiIE5rcLXwHrE\nRtvF6ET8kOEt6TT9EAoIYRmWcx7YC26PtVuEhjHtvNMArMjajT1LiiYFReho\nonWV\r\n=svVJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD8eeeqROHoh6+qWsROnMQMqrJ+fKA0sJw4YDzs5PpJmgIhAIzHkSKo4J23RRd2z7OgJEsuJep1kg05jGttK2ln/oOR"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha3_1591702861531_0.24571990169045854"},"_hasShrinkwrap":false},"0.14.0-alpha4":{"name":"graphql-migrations","version":"0.14.0-alpha4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha4","@graphql-inspector/core":"1.30.4","@types/jest":"26.0.0","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.6.3","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.0"},"devDependencies":{"@types/jest":"26.0.0","@types/lodash":"4.14.155","@types/node":"12.12.47","graphql":"14.6.0","graphql-compose":"7.18.1","graphql-tools":"6.0.10","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^0.12.0 || ^0.13.0 || ^14.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha4","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-gI5xH+HjD/X1sSzOT6JZCz1W0qvE9kqeMUxJmXSRtgp4h0KpAmjIsT41f14jUEJSxLC0lGNNWqjNI7HJf0OA/Q==","shasum":"94510267bef69845ee556e4f98804d55c54a7a05","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha4.tgz","fileCount":125,"unpackedSize":281943,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe56LyCRA9TVsSAnZWagAAU4EP/2eSVTBIQk4Q/+gc6aHe\ndgJYpFU6mWRkw5Jmpym64t0ckBiSmm22EkqesPAWWHsiX4GQPJi0DaN/AJX7\nuR/Eli9a1U8NEhY9XKeWmkarLkIOVd+WTqhhtgUTO/OyvhxOgo9avgHa+xUL\n9qnZtzkIV2NWRAULi36nd1loc0JzQQ+K8BTW8W/b+krtmegmLbXUbqJvUIOT\nBCzjS9mboYfLo2G/MucidOf2/tYDzeVnnTLYO/7RTt4EvGJC4dnubDaxkCGW\nL7IY61yKTTL36P4rVd29t9mX5CsupC5h9PotCdAKT3xgEkGZqg5cDwNOI0jF\nW4odelPItkqfBYqZKquVpADdVHzP/r6K8cLwxeZQEGNa0zXmFr4EvxR7/ABB\nNoFd1lMr3A7EcoE6MmBhajokbdHy3oeVkonbeXRRuMXmtQUj26DJdwRKAXfl\nySEUM1UglXRX/9HFEAHIl/Ww5s3HzgG5TlMHYPOoWjk3fvU6sXPb8YD8/acM\naVQ5GYrW0+btLfmPZ5VNe10tCq1AnNWcUC+LI9TtOGO+EtXQuiMOk/OMlfpm\nfxQfS8xOfLIRgeiPqfVeidKrSwIWycpW+jhVF/N1NOS1j/CeRLRioL4YnDXM\nBI3U3MXGip9bMm/aU3/eFDdx+VH8V4vdEsgidU2KUEpteVBsqwQDh69gQi1P\nMcQO\r\n=FkU3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxZIJvz5feYdgwD1sn1RFLFDR3p7iwxfVu4X94kyeKrQIgLgJyQH1tZbn6BIPW/LYAtLipOKzcfrKEae5tbgWXV9g="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha4_1592238834390_0.7169274167561148"},"_hasShrinkwrap":false},"0.14.0-alpha5":{"name":"graphql-migrations","version":"0.14.0-alpha5","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha5","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.0","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.6.3","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.0"},"devDependencies":{"@types/jest":"26.0.0","@types/lodash":"4.14.155","@types/node":"12.12.47","graphql":"15.1.0","graphql-compose":"7.18.1","graphql-tools":"6.0.10","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  db.default: 'Note title'\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha5","_nodeVersion":"12.18.0","_npmVersion":"6.14.4","dist":{"integrity":"sha512-DKyb+pq8bjxJSGIDAiCEjBYjsEpyY18T2WIrd+bT1q4vEPo1L+wKx28dv/xd8YUA7hndZjU8yzPGY0RJ+pdLnw==","shasum":"f48843bf918334d9b3993878e61288e77464dfb6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha5.tgz","fileCount":125,"unpackedSize":282013,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe6/XKCRA9TVsSAnZWagAAcFcP/jD2ra339od/b9IsHYLd\n7wRHC5sHAr4yl/LL27oIPeYU6u5HIGNYJ/6lP8f5OlZkES/zbtVBZNSE3BFJ\nu7xsZ2FpVBVtWwUJdby2pmlbWOPs4fBmK92c5DVTboPByg62Cn/X77TfVxpr\nt4q/y+khLziwFWGViwF1PslyfHOxz3QM0hZy+vmhacjuXYd9jzd+w3UGiipf\nuwfMiliQO2yyJI4y3xlZgINVO8dXYDvYl74sg20TbbOzzGAUyg4HeUEQFOOy\nHh5pO7EJ6Hfnwzs3d3NJc3mGD8nSLdiQs0GnY16qXlP5D0VqskMLUI5I+DMO\njfXmjut1AUyO1oblwGQxA8Xx/HfD105obqLlq7sS0Y4nxUKnZt+NaigzHlwg\n8W/b2WtE8XaBYPG+QZ9XzPDgYPZR8Xey7I1i1qzsE+AJUcVr7HFUbstzKj2M\nE1OzZUaX+hTKdlh/kniE2Kc/ZxLUc0ym4/zdEWLJ7s4F4h60eQAlgti2udXX\nPr/ZigKxx87aDFfoXAaZc5DqEb8HlnQaSYLm7ON5sXWESXnv+VZ7cHJ7Rp55\nHIF7KLXXFWrrZUa5z2iMnI9K7Flx3GsOKgv/bYW/P0u5M+Azw7WaUvh5OKHl\nFFtmx/7Wua01D4NLIyncU2fY+xQH8GhtGDh9KbxkJFjUuKNZeVDw4aA5WY5f\nY4w2\r\n=I7My\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG38jIAa7fAZetKGUMcnctHiZqL5fikcRyN2/w8GW92YAiEAhg7ujVzouM6Vn20z1GrmVk8CKk2c+4VNv7EZb5suKOE="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha5_1592522186360_0.8581447777279934"},"_hasShrinkwrap":false},"0.14.0-alpha6":{"name":"graphql-migrations","version":"0.14.0-alpha6","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha6","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.0","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.6.3","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.0","@types/lodash":"4.14.156","@types/node":"12.12.47","graphql":"15.1.0","graphql-compose":"7.18.1","graphql-tools":"6.0.10","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha6","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-IPrtbgmQoQeL+Vwnrv976K3q/3Hc7t/Eber4B2YFZcL4OB+HuFb1HAZIo8Q165NIg5ZFTqwgMs4n7TqijFCQog==","shasum":"d583707f6b629262eea04acf498c67167f831a63","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha6.tgz","fileCount":125,"unpackedSize":282841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8LNuCRA9TVsSAnZWagAAO/wP/RINHf4tzDzvfLefqIka\nkOfuoOSdZ7v9nGsnJXFnM9NplEFJrzSF6XUeBN2WMblhzqNZwqfBWwLecCzn\n5F9LkUuTAXRfeq4Y/6EGI/mOQdKUaT2ffICL6mPBRe9MXGODfjnnVhncz3cc\nRBEgPLVFHR6yw5BCKiC2jqeBNmoeWlZR7QmuDeWwXxh/LlnAOd/HGZoPM10t\neo8GbyY3lx5OiHp7jm0LXVUbBNFNduckbbdUY0Hpt9K6KcylOX6EgbXoY5Jo\nBVTYeM+jBUeyZ7mxctkqdbYkH54Chkxte1MoxbfOJj1l7xkyUI3ihqHfgvtZ\nEhkTLVCppoSjK2HvauIH9p6B9z+6f+RTjHYwcw/kVit61YeMWpIZMaIFm1Iw\nmBezME3HgUM9AqKhBoR/9vzhT0Mtw3cjHa26qTaAXKbaHctyeWmBUEsAlN3g\nR7au8uVsurcq7vd91ltt7kuVn5M9dS/Si4hPOUyWCCENJmgNF4dr/6CgjSef\niXxhHwd5X/jJXooMHLfOVbh9gpaR6SMo1KiR3Vpk5NXkx+AvaniG0mmUrz5h\nuFVJU2cGuSkzt50hvvCSvcK7HLuYONx/pGrU39CLZQXYEc3kimxO+mJGD3zd\n/BNDeYMMCMXUIPi/jAWCG1pYGThdRdZucyhYTW9fk3O/BEcwiSdlgANNCYhd\nBUrN\r\n=UU1l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDS0E2Poqu9Dx07GkF/5o9UbQirLIpMAuYoTbLsEFh0vwIgeYzhFYCemOm+pLgt6TsYrzUNg+CTl9I1dd43j6myvcY="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha6_1592832878348_0.09264337999523309"},"_hasShrinkwrap":false},"0.14.0-alpha7":{"name":"graphql-migrations","version":"0.14.0-alpha7","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha7","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.0","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.6.3","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.0","@types/lodash":"4.14.156","@types/node":"12.12.47","graphql":"15.1.0","graphql-compose":"7.18.1","graphql-tools":"6.0.10","jest":"26.0.1","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha7","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-MguP2oWrlc7DM1OKwxBueCFmnmpX1Ut9YDOA2jIfpG6EtunfiUoI94SQhEUnKi/IDEiF3eef4tZasJdefnPeUQ==","shasum":"d86b138d25a4675ecec6a7f1d1164340db654741","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha7.tgz","fileCount":125,"unpackedSize":282841,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8LfoCRA9TVsSAnZWagAAZ1IQAIhk5TYBXgxL8derrj2n\neFSBV4vw1YX12wwlKVA3xIwsHiGdzX/2llI/Q6J7zYeshfYlq8UmLJxw8AtM\nwdSASDAfs4a9Kf+oUPKR23W5QGxz5/Fgz5/xTDkg1NUdeSs1ApPKaM+D7b1Y\nuAmpt9i5r8/wcSI/4XNncT30x8ZHtXH78N+Q8NIwXXzNwCfwZA812V/kmQNg\nZ7gry0N6LYIgAUJp++6lk3GYBDRrylQQT4oE9ULHaNkQ9lud+Y1himnXCW7M\nJhIK1aw39hC6ReOiZJ2zu0JbdTx8fZDGIb1IQMShzPYaWgdVt6koyKLi2Yk0\nBJHE6qrCAEodQpjcR8FP6Q+X4MPV7FyDINHPt0FQA897+LNds10j+wEazzU2\nWjK3iN5fw15QXnSMZaP1nLmD+aRqxVNeMQJfSLxgwhhamHRVpAApitfJZKfv\nH30uyJWILQfHkrzGZds3ldsgZxsxpD+9iiL7OryexnZlTgz51i4154qAYxrk\naTZjD0Fvln3CEdCtp7CFH6Ad8nrW9jJcjZgAvJK0sVCPpDs23QWDrHDu6s3B\nkVMEtUQqVGYu11ZFJ651zdsNZ4icNUWND+XRz0zaAZs9H+32zSqbXKDv0Q5o\nH/4ruEBV/Cv39j40Z6mGK7e5tJo4n9tE4phRuy+bbQ3z/vAj8ThNH0xGFgcm\n6B0G\r\n=tMk4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDmAb3PsNw69tTB9k+1tXO3gKzD1r7bsWuuBzANXkMiLAiEAgEk9LJAjPPO9Dr2PqwPVY+ZCudc2aveNRLByZZz8qhw="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha7_1592834024522_0.6557067436171866"},"_hasShrinkwrap":false},"0.14.0-alpha8":{"name":"graphql-migrations","version":"0.14.0-alpha8","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha8","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.0","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.0","@types/lodash":"4.14.156","@types/node":"12.12.47","graphql":"15.1.0","graphql-compose":"7.18.1","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha8","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-lmsxrMVxWBl2+vGnIsaAjy5DW120SvWbUdiG/b4vvGvt7Op1JXtSiHYghgv8zQemWEAEIGcm1nXzUml0FPkZfA==","shasum":"615dbb367e889afb21001e8dae80a2418d0e62c7","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha8.tgz","fileCount":129,"unpackedSize":285822,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe80+yCRA9TVsSAnZWagAA9GMP/0NbtxlnLWjwUM8htbct\nJynVSA3qtiTUpLkuLzqD03sVBrO0+JYlBQ4XYEIBSVrf0XhnTM5//yctozYz\nCPCUyqniT8pkAfU+lcdU+ETHl1Higyx6yQbTaT+GfrfIp+QD58GSuMepRKmZ\nkuFp/xsEz29nQHpAJuzeQdxNLhORcP6Vo9862AhST3zrw6YQEhpuDlcKr0nh\nbCrIfPZIW4t8Q4iEqWc9vPUv7nArRUEHDmlltWVAMGipWZ9jNAlzJBm6COmm\nqKnlPFWLLf8+hsygl2kRkoBlbQXvCoj3zVG+r0hc2Q1SppgtqEDREx581qhk\n+gfzUm0KB3/rFs8PMsBlEcf1sQxjKrEUJ/CEdCDLtUUo6zTmM4ieMNv26zZL\nfavyeWn04wwVWQ4SYEvM5zS4vsH5tzRGsVyXekq92WoAehcT8FBaDlhdm5eV\nDpB1bCdi+kC9e2E3i6wms2Edzz/Z57f/W+6s8XvG/xQawCXxAGYVMQaEPKM9\nmm9ebSQkx+Bf57PYcqGi+Lh1GGcH+OZnPxpAia2nNBodL6EfhwVUz/crFc3C\nmxgbOjWovZifJzcul4lMtCSc5yhDBy++Z4omPP73KvjDjEU9DjgrAJDgTait\nvbgopTAh3nxRSuYKAnKLn/lsxlGFguJODV6c3ntVCJ3WB7xc0MtOhNUvIDj/\nlDAp\r\n=6ZQn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKikKvTYbbWYoBweJ3lVTr35egscFmT6sdIAmffFh9MQIhAPjerTPbbcNZlSsHrYxyaDpmycBiIvfH7t3dtsc2pVYd"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha8_1593003953785_0.3431322746710148"},"_hasShrinkwrap":false},"0.14.0-alpha9":{"name":"graphql-migrations","version":"0.14.0-alpha9","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha9","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.1.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha9","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-YMbi58XN/Dl0fk8wLy8XaNT45jcaO2547pHmsuF0pPEGqX46cV30LfM+iBc6sFTDli0mhehxL6FH+BqLBpaecA==","shasum":"a89b27a6b219a635e59b0d0519a075cfec0faebe","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha9.tgz","fileCount":125,"unpackedSize":282705,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9I5oCRA9TVsSAnZWagAAi0kP/jXzy8GFq4BAuoW8Fzjw\ndPaYKIFzfhP2yiV++X2HiTFIqI3mWAHpjSQVp6dcXe6I+RkRPKGXnm1vhWFz\ngiNyd4Vw2fC7GZ5d9DNDt70DYoVtEHnmYN1Roz9xQxwIlPcP+MoMF1qbAsmN\n+/k3jrxbOUJDKc91TG24Qz/OpFoaniAZNZsHG8UoQqeDsHbLzxpWwLLeqnZ7\no+xyzC2pLitX/kyq6mLzGCMYCEtT48Sn7JjD0pNibNKXr1hGsj8t+TD1lbHI\nfwV8f2Yb6flzwteVLEvDYe9xGDqmvTxW7OMmkrIYGhT45pAuDz3rVmghyiZG\ndVHaV2I+Dv23xIuNHEot565O2eY5JZA56Dzy8FbvFXvauE1Ivx7qJATdIesq\nzx1QFmgWanfWgtMEdUbpWFRblg739FtHtKeiUris5AaOXNXsx4CLDFs4CgoD\n33q2LAYo/Kzu+eVR7F5J96y/6nyM6Pa6kpF7XjJnEUApklIWuwNCL8roDdw1\nJrUvQ2thYGEJ+T5k5OVufv3gnaF05l/sV0uNt8/0/kH55DHh2ehrdM+RehF/\nEj5UIcY+1X1aaLMRVxj9PrzEatBiqJorNbcjT7XD+0SuROE6A9PuxpVW39cL\nrDLxAgykZUaDzYR0NNI5rOTMo2xsY5ybfg0oDkB/n+mhihR0R5lOJRaIh5bt\nricr\r\n=ah9m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDDptcHeHv3BiIOy869rQ3Ue3YeI8KgBbvLZ5eMfYOjGAiActg/0vYOfgKOsB/IaTy+aS42IDAPUwL1LD9ZK8GaSOg=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha9_1593085543477_0.40194497194712353"},"_hasShrinkwrap":false},"0.14.0-alpha10":{"name":"graphql-migrations","version":"0.14.0-alpha10","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha10","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.1.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha10","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-4bVA6tPGrCoW+fLOru9tIvP63Acw6hGuT0Y3bwZcbOfqfFR7P0FtQ8G5AaRDuBjp2+C0R5cWpxfijEXVDSvrsg==","shasum":"1f9bc28640a8f7a1dd17bd9e831926151e223e46","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha10.tgz","fileCount":125,"unpackedSize":282707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9LrZCRA9TVsSAnZWagAAm2wP/0nk7nqosGCbiqZmVAZN\nXf4Wuri2SL5w8VsFSI0Hg0uka3KizauJKGK/F7CGO2/0XwD4T+yrrMpzR3p/\nXN1qfTnyRh8Mh6yqltMImClvNZukfMMxeSxiWTYrmg3Jt2APL5ABNPdc5mbu\nHRMqUjEapC3y58rhEwiwbdPc/ydspV56cJLHSuQ2KM9ZHXIy/45SC8VFuDbe\nevUQE5FdZd3A069GmhRw9GLU4VRqPrOLb831USydOpUYjTiZeVHCf9Nti0Zz\nqQPo61SDZ0gQ8J7YJT/6yfKmBZfK+Rzsqvge8nfHU+rRO70E71YNaOgsuPvI\nksOivFuqP8QRKGnlpK5U97yU3X+jLnIxoR3r5Dw3DeIYs4cyO6wfb1TGwc1O\nZ6HqkXlMv0BtNzwMo/a7AvyMYh3oGPSKk6l9SUlveAStQxrIMq5W84ZMb1xB\n3VIgAH3dzkBybyCnjxu5k/taAsjZ+RjyetwtAtX92Td80itMiXHbSjEuB/Z0\nvvPBQO2yin4n98+gpdcgN7agJPgO5R1NbHVP9ODyo/7bY9LCGQNrA6GykAos\n+WpDCZ6TBW3PNH3M01Akzu4EqIyOran2+nFYE7ktNAD5rqn44KpRvh0fj3d0\n581QC0HnpQTDb0Ts1T0av5TUbMSPYjezBgcIlXfqYwl6OpOoP1XF/b+aVINl\nXS6E\r\n=LmH9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClucNoe6bJTj1Xr1S9iCfgQrsmQNFNUwR4jM2PPk8IrwIgcmS7U9d79VGhq1dBTnwqHMx8kjfKk7/IECmMEUSGrAg="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha10_1593096913592_0.4528095260740983"},"_hasShrinkwrap":false},"0.14.0-alpha11":{"name":"graphql-migrations","version":"0.14.0-alpha11","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha11","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.1.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha11","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-7o3MywJ/EvRNEaOn7uQX7uXyIPTa11F4vgJFrGe+DwJG1svr+odX9kX/ySnxRlxgDWVa4aI9EALHnU8S/349XQ==","shasum":"b072f5a8c59056b22c5efb208541be62dada26dd","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha11.tgz","fileCount":125,"unpackedSize":282707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9gaECRA9TVsSAnZWagAAp0EP/3Zj196kHk36A5XnW1MT\ntxGcCVTJ2WGzfsuPNBCtXi98LOs/LONZKpBIyLqJDoYqBPCGSKlOAtedHL9q\nnZX7jfyi8k4uK8MrCI2JmS01bDQFEzCvuUp3oBw75Iih/0nV0WttKKt3HdE/\nQbf87hDxqt7KQz7touC8CgKrulzj5DEarC9mKQZ+9ZiO9aFGr+xbfYjYo1DO\n309S3rnFbvvfs/aK0L+REXkw6lTD/6Cx3dtxj6xvWw0xS6jk81SObcWJR08g\njD2e/c3A0KGq+3Y7Alpurz6+RKet92CZ+T1wKyPyn+53mB4gU4/yiHsm+FVi\n7nMP0ceM4IwolVyEmUw3BLTdWUQ7WQsUQf9dgNtAEjua08JFAlZVx42n5ZXB\nckf/of06qFbuHrLAEGKVoubH52XUjNOm3VBiNBFP9jgrc/w/redgSmRbfouQ\nnEeG5rZjuKixoUpfXMMVFnHuiOPL8PR4bZHJC/DTb6YGYCE8cxj5bDCx/Xrc\n3w6UN287LfjwKd9H2jO3Ia+jK6mPD621EkUA8ufoV51AIkVBuMcJUi/phVN3\nV4vPtpNEWOcr1PNi3gXD3EoadmtlCFMUqmZ6hO1TXPAt4zNkhlfP5FClRaPK\nvqkKBsoeFDp6QkfB9mFDIFboSFioKYqKz7XDjCPBec0uccDAiw0WahVwawjP\njbTC\r\n=xpDU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDSAmqEaADhKb81050Z0xKBHm7wasVZ34vRYfscpFtrigIhAM/ba2b6i3wIj4te3CX89EQIWN35dY1aryuASxd86ycK"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha11_1593181828318_0.22760246203368006"},"_hasShrinkwrap":false},"0.14.0-alpha12":{"name":"graphql-migrations","version":"0.14.0-alpha12","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha12","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.1.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha12","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-C9i7J6N8/s+y+EOddSURmhq/onwQ7CfwvRdKYWNwh/KaFtooREEVK17jmAk7Iig+uQX8pHIBVR51WdSveStKnA==","shasum":"1a619400150b025bc021c3dbd3c0a8c53dcc1290","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha12.tgz","fileCount":125,"unpackedSize":282707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+dJpCRA9TVsSAnZWagAARisP/3kgaFYM6Grs64zRxrRQ\nJRxEN2rM1PINm4WWORjtsItR33xbBhnBe4ryLI4SwAgkdD7ZfDeTfCXixgg3\nB4cEQW5ofuHW5an9lDy2UBwRAHSgz7QHWO20BRvtXfq4Qf0zIUKV40uQR4QW\nTh+uxm7y6heq3q50JjNqUO5OVBMqKmZGXgXxGNETEV8/ruLVRhqRTHx7Wjke\nLf978iarT8KrcC+Gz6XCHJpVlNU7nzkd9H3Ek8Rzoxlom9sq69CenuJ5nDDY\nZqhGmaJEgeAQfzpVYlr5KbfpylWsp7/4rx+AbVNqXBlqTDZ9Qn2t7zgukYYC\nxJmkJygu70HZrGlkQE3rFSbai8jkZ2WCSGd38xFKI88qGAjBSiWJ8jdt0cR3\nQZo1SqOIr/o67Teyb23hkO9UGjKMT+Gj35irxxD6EsJF72dRjjDIq5DOykCT\nDHxpIdRZw/sJo+U7Q45QOqueLxYm+u+uRH1IeLOswzWgMsEBzKgrwRqjuCmC\n/PmhheBmKpmiRdOdDuzCHFNJV+/Fcd4EbbeClhx6j5sOyxRCQiuIdEZmcYUX\n9CaGA+yeqmt6iet/Hfl1200YAM4oz7TWRvliY9KbOPomXwTAK7XMllw3kS/l\nYzeX2BoQPHJyXvcyOH1234VzU6tg4ZDTVKpcgGNSXkAnZpXvd9t25YIuEnXM\n3eiA\r\n=ijlU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDdWzNkg1D33tQwnme2wZWeToTxjRXp/caAwMfLzQKfQAIge3yzUP/Ygh6S8E7XNkoLAhClji6I4To6Lecnr0mj92I="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha12_1593430632610_0.5163204788034361"},"_hasShrinkwrap":false},"0.14.0-alpha13":{"name":"graphql-migrations","version":"0.14.0-alpha13","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha13","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.2.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha13","_nodeVersion":"12.18.1","_npmVersion":"6.14.5","dist":{"integrity":"sha512-J4NHBmzO/dtUhkhkG9aw0GxXSHulrXF6fm+8oHUI+8PK7Q231EPqLYCBCXaPGyQp1D5t3sLIqFvIKcMnN1k8bw==","shasum":"28c6df72a0973595be225a9ab39a979d5d7f8af5","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha13.tgz","fileCount":125,"unpackedSize":283346,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+gYNCRA9TVsSAnZWagAAGNEP/2pL+jtMgT6Ji4rtd0Y2\n6iR7IyyxtZk9AEvfLz2WiBgmVnxIBDt5OUeoN75DaQLWQd6c+ESkag7eT936\nLDp3mwhSuWxbNgKGNKP1knZbFZ52q9OQ/vVcLJFRtBJqgtT6QtEqEn9cTioH\n81Pjq1WBYIdXTN0ZmlhYzWzEfglqFOO2xIbFJ1I7zOpAAp5jTLOvK+jczG4n\njUlXT3oKu1Ek3xDlnNDRyAiuoGcbiqRyRNMh+K0h+T6nuJOlMfdc5bz+8GU2\nA/AgEqM5syZM1ZQkgS7nrwMtapsPisxrzMHe1i/5H2gmQfvBH8gi5D/qR7Ph\nX/+YxWVXLVUPIuhtqwhqrW7/e4riyMSowSJoeIBR4qDDTT41yrEm5/NeFX5p\nrWNNFxZx6fTzKZrGn/NbINikdmlMnjYsTp0lLaGDwBvm0cs/D9/kneFUM4gB\n7xf1g+4Bnx4P3HPc6ffP1Qrq00RLZJ9rwtSrwtP8hBWluWwjASQKl5VJrYzp\nGK8ulan5EN0vZy4FWnkHZolxy8LMFKRe0tWx7dWNYWCk2IhvpR7Bn56C/v9i\n/t/JAQOH5t2QCsO6WwgqwxwYl1YbHy7gEr4TuR1bypR8O9D7qFnkwg95+Klt\nFA5vnDsdFBF6IoITaezDAjU6XGR0Aa4MPlrORD4jkhVMh9FgJlOd905UxB7I\nvg2f\r\n=JQHr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAuv2+SCZzpVfVxO7eF9+zF6dR9Vc/9wW62b9JSHr+CkAiAGGOjpZa5aUIYUW137Ccy+CT36ZUN+cnCJQUc0jyUezA=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha13_1593443853185_0.447820220625486"},"_hasShrinkwrap":false},"0.14.0-alpha14":{"name":"graphql-migrations","version":"0.14.0-alpha14","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-alpha14","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.2.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-alpha14","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-Dxaopx47sW5q2ab0J5ox9MQLiLiOV++JyClqhDNA6LBPplHQQ+CpS/7LAODonVf5B6V9m6ZOmDaGrkpLGcK5DQ==","shasum":"0f4e8f697201b47bd511d43edd90cb7a219741e0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-alpha14.tgz","fileCount":125,"unpackedSize":283477,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/HnpCRA9TVsSAnZWagAA8ocP/2NNTER0H76MIHebnVz2\nSCTXjPGVDt2VOlS1Pw+tte6vjrJ8R3GCdVNgOzERIrKILLJhxT3YNfsNX1iX\n81strmrQbdql9VKvBMHJrocgXGf9WOu6TtBA8iFLZ0WG5G2Ck5y7qWJfDXIV\nefMzDJZnfdgMnObCO4vcW69xjbte+WDjD8JRld+B7+h3B5Kfi7KZCKSSsuE9\nIldftIjIE72fDq+Qale+U/smkjqJRvVfTxaeyk8cycKS4o/U/OUf2h1RWHOX\nGYEYj3ig8bTKpgR7c3GY4qOmdRu/e7qMgGjOk+6hGgDU0BSbouR9RvIAcoaY\nj0w0HkKBMleciXk5RG5/iy01q0/W9zGCSooysrDEALceMTxXvwmxqTB4QdSr\nA+3KzkxfxUjZk0xkDC1gjBRYuf5CnM3bcdwwOypdORK3NVbYzfDPNrOc4sUB\n3liCZGM1E8XGeL4CrktuF/rcjvGJ2ryqkFOao4EF+oDwi/uAwnJ7hVsW2yBH\nbMgqJEiVwhS2J9lMVsqNZhZLT8QElSQz4JoGOnWuz0buL50fx4t07oCLRF0m\nWaonCT+1WsjUEGzvq0veBm+7h43d63RJ7zjBRBFTTFKV5DRdcl7kqXKt9efe\nneDXO2+U7hP+eap7JpNE75fCmG5BvioBmdgcfkRWC7Ox0FKVWgcKpuvmvplV\nKFTl\r\n=BoG9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC5uT/ZlxksMUKINEBoLAja++vVYEpnpRetSYPKlBjY6AiB63/JqpQX3HDRyhXGZvkS9tWJ62rKMB3GfW2/tXAAv0Q=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-alpha14_1593604584827_0.8472583859874261"},"_hasShrinkwrap":false},"0.14.0-beta1":{"name":"graphql-migrations","version":"0.14.0-beta1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-beta1","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.2.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-beta1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-b2UNEtLDanNv8hhvS6COXJjdem2wlctkidEV8GU5MG4P/DWYZQ6oDekafMAS5VXcI+O/CCDCs9nLXZZCO/likA==","shasum":"d4fd7181a005101f8073ca833953b8a225e893cc","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-beta1.tgz","fileCount":125,"unpackedSize":283473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/gSYCRA9TVsSAnZWagAA+LYP+gNIc7I37fyAjuJiM/hf\nrTuKmFg5G215gQWFkuGIa7B5+Tbvl7cIP7f+6WnbLUPYVKkvEu8kdKHY9aZP\nXjGBoFM57LUZdchqEGVz5HDpHGrtEpeJCp+1DFyJXrce68F/0cuDggnNcBfk\nRJEV52oVp/xR5I4HWy3cBxxajXk/wEjsiywESN98K5CF1gsdeYePWgewSca4\n407Ii+NBtqmKyZy0+hj4F9KZaFIjPPMm5Pj0O7O8DO/94VHTd3TuxKjFlYdq\naphoRFHTxnxZXp6Ltx2B9v5POO+gUAKgLVXp/dbO4tFgpVPUKvJzm8bWDGzo\ntsvv9sYgGcDBydQcMVsEg/S2PtrRwW4pCUl5AjoXsNEN+eR72H4zmoPEGYl0\nAG+LzeQMyMMTgjqv05VfVqraM0ZwQyrVyUWW9cJn7eYkQfV4FLOJzHVbQ3aW\nX8YX2UhmRcnyfNBOJnqdfhkzHedNhVyueuCRGiwB3KIDYZk++l+ULnNi2z/v\nQcnPSO3gaw89ATZX1dW78335Zbrv8ixb+IXwKiGJFpIrKh61f7Zct/u2TaXd\nNaxcaubuh9vI86+1llsl7U2oMyh5ddLzzR0ih7fudVxp8DaJCkvuM079nIuA\nsW5S3zK8A2jCdfxGdob9/rPnvftOeVfPgAsU6LujbMCBSs8osHmCtbFZJKW4\n3O+y\r\n=mUFV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICwFIoSwWpOYIjEDYDMrN0uLXN9VLCJMi75OTFVgQMdxAiEAx1FUPX+s4Anv5UuS3A7TQlBMs753qw0Fg41J8Lyq49Y="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-beta1_1593705624040_0.35703890732646304"},"_hasShrinkwrap":false},"0.14.0-beta3":{"name":"graphql-migrations","version":"0.14.0-beta3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-beta3","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.3","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.3","@types/lodash":"4.14.157","@types/node":"12.12.47","graphql":"15.2.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.1","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.5"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-beta3","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-DnbGYAk3GMsvbRuAlfOQKJZStRySCnZ6mQXRFzNYaZL8TfwpRNDzCLcvu0T078+IFnfX9Ow1ZMIcymczmjQP5g==","shasum":"343a589fd8fd0f06baa03f4ce24e6518842413c6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-beta3.tgz","fileCount":125,"unpackedSize":283473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe/w/cCRA9TVsSAnZWagAARZYP/RLXNrhFbsTHTT+Obo1k\nyQzr896pxQeWX2Or2fRunyEsljqMd/lWupZw9AIJRQsmyaARA1vUCACaYfWD\nIO+xGHqaw8honGYLh1RCBkd8CF8hEiiId00RxkUigUn9lvmAhYV6ay1LLbcb\n+MN1GNTnBoc+AOW8I7UewkQXDvUB5Gg2OhUYkQ0mQ3DKU3i04saPt1QWZkUt\nlNl3bqKqIiD9CBj4U99vYex6m/OoVZD8O+b4UkPeiDzUyICwJ5i8LVUk2Bjd\nHXAxJBDPW7SHX+26eGsHYwHChV9Z13o5VoET3RbbWBxiVt3CCEkua6vPYPgV\nx+697Tn9YpgHZFM4fPvuBlFOK2tPwwX+vSYzEmGmART5/uFP8mnjiR7PjHBe\nZU5d1bm8bMvaVvAGnDYJF68Nvgv1URG82ZfPOCzo2sryj2khytcqkMkoIDDE\nSJ5Fw7MBrpJlXTokmiD44ZOgNI6ENeXMarxl663hS8G6ihzm1dNo5mWI5qki\nFz0a5ezRHUzisN61EZ66FJZl6f75uknUJK749BpwXI6pKO7OMwTXERvRKQJP\nsnNYlANIS7ugdoh9UYPUz8QL9bmRUp0v1bAtOTTx27cDk2zyUcQSYN7r9CQb\nx5p+QLpdKzJkYbuHoTgFIDQvD4pg/4cxiLx3sbe6b7oX0wckSQda0fRm4PTS\nR6Gd\r\n=Xph8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZ14Pw4HdFFoxUKAdhMINjSn1nmLjjDGEeh5knKUQIYAiEA60b2jwPiSNUDKKV6htRfTQXG6cPGuz6U1mWEiKcOQSw="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-beta3_1593774044597_0.4273628549330246"},"_hasShrinkwrap":false},"0.14.0-beta4":{"name":"graphql-migrations","version":"0.14.0-beta4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-beta4","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.1","lodash":"4.17.15","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.1"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.48","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.2.2","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-beta4","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-RpSEBOTzDNuxfO39zJ7x23iaCvvmjvNiV8RuHErlB/T8kyDKHrhp06l4suH5K5zznBjpRu+VoTTMNHCiECr8kg==","shasum":"da7c8b3ae0972088f6a25f4a9a49f44e228478f3","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-beta4.tgz","fileCount":125,"unpackedSize":283473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfBYvNCRA9TVsSAnZWagAAQqgQAIUYKiESQ3+cDRebEx9P\nPK3HkB6gKekB4l2ZxwQX3/ist9NvW6MIbQN4jnZ3C+fCP7wnbTHzIilrWnOi\nEQm7yFkDSbu8dACK1RyXvNumxOhYBEHOjj9MaJ5qoA8VcWF/iR/wNyn7EHJR\nuOyhAEXlMWYWxMRhnDI+Ack4GrZ5G5dW7BnsBaCb2v9277lfWPl0+v3NDldo\n22qpbgtwVVCJeM60j81rabgyGNCXtDIEMZ6cTTyJyk6VZ5a/orxFmXkSKDAP\nKzKvMSJYcCEzP5/TeTcLnm18xfU7/hZNVmRWhTlRAhETQL0VSw3SnMrz+7tc\nFjKhUELkihkrnTbBfYZ1jNKfR7GO8ObNe8EgO3BV8RjYP0BXvEfuFJUHt4+Q\njfw93Q1p5IXkqFoUoG3vMNpkee4BsIqp2KVhcAGzYUmpeBhbmJbV13nOVTux\nbJlqK8CHyghhGd3gJJIH40x2PymEhuZRYGy9LT2eT5Ccb+knLW0iio+1BWjH\nkB0HSGgxWAxYxtz1l3d2DzYgYDzsM9gkiO5LLJe7JMAN8lQ3NQhohOfEo+ny\nvDuDAYlNRCDVSY10klXolkdd3ZBtF2oOTi+ZVhzTsyo/oig6YOBruUs4GdWR\nsFl84sCyT4oGJz2JMzDbLum+0pszCirGg+nrNxl+JneWSVdFPKD2Hr6rdMOD\nrU3v\r\n=TrRW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCMmvf2JV+P0i43xQvOikk7Ap3PJoTREmO6sljO6mKjuwIhAJdRIU7M2uQ4Y+jip7rgJQhkgNIxEPQbWxXaWYRjFufS"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-beta4_1594198988662_0.5262361045698758"},"_hasShrinkwrap":false},"0.14.0-beta5":{"name":"graphql-migrations","version":"0.14.0-beta5","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-beta5","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-beta5","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-miAgQFyZl0RqeitN2677tsSmStjYOeL0fN1UeY8cXs3wTnfXsw/NIRNJZrA3exVEY8G8flcOIoGpNptrl8bbqA==","shasum":"29dab9d89818dfb70e447d63e87dd90ae1e49cb6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-beta5.tgz","fileCount":126,"unpackedSize":283891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDGKMCRA9TVsSAnZWagAACREP/1apGQRm++/RtzN9fqUg\nOswwOKXYh5eUvcNsAHpKjJippuGePSqrStGdrOygnLDxg1c+buKNxeN5yiXw\np5uo/uvcZIiEIy+xmpBJYr1juRQthvnYxnsj45WdEoadfk9BAl0vkBenFKPL\ndJER+hU+356fBUGT+8A3jhfKl5/jgeQ5VDas7wt02hiei1h9a/G2mGKD4eDb\ndJFocfxxYRa59/B7D1aTw2/lLVjpd/2rRsU3RGd7rr+UQ2fse0SPiPCDtL+r\nKk8c+ThBckzsLkTiGYLSvvAA97pO9a/V8o6d+VDF6Z5usbADzI5z4OwPWrVq\n24AsgX7ctbF6zD4MmLYBTRDkLuSE85JVBMJ1PO65Bd7iZCLr9SySuDmPxj8D\nXo+Q5JLIndUElDqbnouj9+ZYuflJlz/ncQz2b8odyImjka3wE4V8Iu77a4NI\nLsq2/XXm0HozD3kM/fqpU/to2nGqespFeQyeAVIpGeQhL0yk/P+Rn5QBQcC+\nngLJ+1V2tLBL1vpfgK+kxKeS9so0Krx/UDkvUMWJoffp+TuOJ7mxZdjXVp+1\nG7YVLnFcfOERFTOzx8BxL96svt2vtU1m+wyEjzxGeu+6S8q0MRZEiV9wsOrv\nMXVR77Pm9PgajKeZqBN+NDyeDkB3WCFql///GP9S46yWQMicmhwldpx2TcR7\n2RmX\r\n=geX2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDfzswf1gQu+SfAorYP/fAt/DfIxrI5iwwyyEpGg3zfqgIgS1v2QnozSIKpKCVyT+KS+RQgA/U4V0wcWzS4ZyerG1w="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-beta5_1594647180278_0.39680877756554556"},"_hasShrinkwrap":false},"0.14.0-beta6":{"name":"graphql-migrations","version":"0.14.0-beta6","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0-beta6","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.14.0-beta6","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-g1UMP+p0rWRHs0dCzoOAaJ4kP4MOMYXLIDQ9PyUo815MvqnG6LqQp72M6ifZON3YJ2Ijd/3kOudZ74lePYa3tQ==","shasum":"c7412b9d7c793e1f4474131a44b7b4073ee110c8","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0-beta6.tgz","fileCount":126,"unpackedSize":283891,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfDtp7CRA9TVsSAnZWagAAdiEP/AlpPaQl5AjxwS8kcPsc\nCYgihg51J7FLgOE6mOIwD6hGU+Si5lE5c27ZOJ637aySWP3TdmxOGtQqnp2j\nyBJknRCxbHWhG8nNxxPMa6VcaILWGRqlQZre53hIkhgDMwS4EybrsWDQJKdE\nzFq7pitewElUE+ET9jFVoDLVGcjoER5o3k45fKKFnSK/8lNaF30X1cuGzZ/N\nQhIeC9iU4bwlxWDJmf7kDziy543du5ar+UQD5Ajr2+YdiNmBvMUiH4PnAYWa\ngFsE05MDmGJ6zTOYnVk79Ez1ZJrxVN3oMVuidf/mjdSSBhnkex8RYa4m0SDP\nU9OWtteuAIO7gmuvoQoyP+RakSboHBURqVi1VaW2pCGN1Jigr/CqNDBA2Urd\nUT0K14gMKkPDnF1bVc9nPhA7inVyiN1g5fBNW8aoR0BpIsYczvNOBMv+FaHl\nZBW406SG/Ymgp6nAnQbIk0HsEcBVHGID+tKrQ1URHcBUShlBXHDmp5sTVUW6\n9g9bTw8bCvxoc5r0OHKn6JGeO5cnEQ2TeKVtsE3zTEq/+AnjKvf08g+sc7dO\n9WcOhCiyeZEI6PoHBPOn/ZvK7jqYhs3JBkqvKLsbJRrfp8BeQJFIAqQvpUx6\nyxI5o+XWTBmDTw2Pk7VwkkdvcrnXMIDRX/IjRL1J5qqAYXuZurxxnPojbXv/\nAmYP\r\n=I0IA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCI903T5ynZHDDrHMdE9//FAOYsgbBt/0R+2PnTDoWnQgIgXcqS2JF3X3bqY99LA6zXfSbO7EDiPVORACMhs9Zfx9Q="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0-beta6_1594808954725_0.7352809837546035"},"_hasShrinkwrap":false},"0.14.0":{"name":"graphql-migrations","version":"0.14.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.0","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.14.0","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-mrAK8uqHjjv0q9RE1+6kbbTy5x/xYEWCYUQl9nXMszpzuODCPcoxLmckLlqAdL7AWoHhJ2tIKFWiMHO7tgeZww==","shasum":"7beb4d759079bc651ca94a30695dd2f294466126","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.0.tgz","fileCount":126,"unpackedSize":283879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfFW64CRA9TVsSAnZWagAAzBQP/Ra/oVXA05n4F/YRU6cC\n6CY3ODE+idl7lUnyKmwVU/FlPIV8bbU+HZruXSC86A81SWVeXD80JHJokPpH\n58wpG4ZEUUmKiQdPjQtISmSnVZAt0W4psMee1fOOokHmrRBHXGBB2rV6RzK8\nD9AYjaN8wiUQf2bV01HVVvQmkz7gdEySotKttApN5QHoUmKue3/9+SI0J9UT\n0681PyKZEjKIxHy9vmEuOgDObP+WLAp4oi82P8xrQJMQrvQV/jbnjnDAhZOW\nexu9YAVwnV2H7uOLg0qLjh1mo8lN3c9cBsycgb5B2L2MFWfiU++1fCBWQny6\neHwVoRgVF7I7IwfINTBDHUIKtWhpexbaqSrE70n10Yg9y2TXAGIu1lPiw1vp\ndfFhRz4kakpPkrBMPBaZAfi5+BobKoeFdjhvdg5xG8ISPi1eAX3t24M1myMO\ncbN8SwL7B4V7rAIUqQDqMEIs4j4QicuxoQ5Z5NHC7a8YsqwCw2qcF3mcV+2a\n0fDEpIHTPDkheRETNZOz7gAJb1PQKFEADFsNqbjrDJyuqaszSPKe0XMiUd6t\nrK2zb60tb8PGZa05hgyBJH/KDRPdCfS8wrAjU8XEUMNRmlFydKw/m8kwhhqF\n+H4E1L0UhCzxn0WaKm3devVwTvzHL8DiGv78po6w+k+kkts4ZWoTsc20Ri/T\n3u7b\r\n=tnFf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF1Cu7Ehi0cYnyRlzsUmxcbIQv5G3NeoxSUkGZ9tMS77AiEA5SOxnk4Jf6TZqM5yo0gv/QY6YN+R/V7FkKHW892iTRQ="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.0_1595240119789_0.023507437026397904"},"_hasShrinkwrap":false},"0.14.1":{"name":"graphql-migrations","version":"0.14.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.14.1","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.14.1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-2Oh1jupDNTuysQdpiUucnoEpxCs92iCM4dRcJIRfYadEBStkjAH5r3B9otaNQ7gspQX3iVP39Hk6Ljy4crUFow==","shasum":"2f1d1fc65b41bf7e86d466d6c1bfa59f16f89594","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.14.1.tgz","fileCount":126,"unpackedSize":283879,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHq5tCRA9TVsSAnZWagAA1zEP/2XopNfRsoCvUeDI/uXH\nfgnlbQQCC3lRsi+Jg1LEXt1dJUOP9D9rQKjKGHcNE6se8y0y+WMVOK5n/kSD\npLFj84OOlumV7UEXU1fQQdYZOhqM32TlJ/CqG9gTAnboSz6guT7mFuXbXaxY\n7zz4XsqmU5rhd7M1SdsP4+034ucpljaZkF8/0QYh0T/TxBErdWlgNWhx06OI\nodzs5Ia9wmpa4vaDmHD3uRDgiZ9MLi+AkhgWjrev9Uk2Js53M2OyKC+oTTjo\nHe5f2qLxSAJBhAoJfi+GzXvmV0aQr9i22clAbUUUWeOeKJXojjm4glEAEmd3\nVHb8e754iEDRbD3b+l58eSOOPoK7nM1z+yQUfyAMTpZeXOd+5EfoIr0dQZkU\nnc85LUV8j6keNOtjbEDNzmKhyuXx1Hg2A5nHwiar1S7nEFCswQ0oZoNK5tGr\nTa9ZQbG2l8BjRagOgdU7u8cueNdZppOMjLqrqG87wGRQFk+MnpsRWQeja/eC\nnHlxGvWMTYmboUMt3hz2UQ9u3AGdYHsVPsFzi5ENJgXR5eGaYUp+J6YuOKuC\nJCspLIN5hujK+Yzbn4vf0M+7a2tSNRjUP0c80IfprcDUiEsN7FcRO+3kL2GU\nRE+vbhnDclOziDyAgt8CAPQm8H8LWv1lcFa/TPwIRDMrOttV1hF310mPp5/K\nOEn9\r\n=js5I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFPoa+szKHmc8qSf1sZUj+DjUDGhVmeRray0ltbFBjiuAiAIgpYsT1AsBngAnQ6gjrbmLNGKQm2gK6rykJEpz2jcbQ=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.14.1_1595846252546_0.35083346338727184"},"_hasShrinkwrap":false},"0.15.0-alpha1":{"name":"graphql-migrations","version":"0.15.0-alpha1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.15.0-alpha1","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\">\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.15.0-alpha1","_nodeVersion":"12.18.2","_npmVersion":"6.14.5","dist":{"integrity":"sha512-maGJ+uy6MHDltoXZzTb89VnuxkIBvyJkjxpbaFrVBZw69SOmhrrVaed98VRIDjAR8oXrZu0h9H5+ATgd6eloaw==","shasum":"0b372f293010e2a88a9dd5dd2197edb975a103fb","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.15.0-alpha1.tgz","fileCount":126,"unpackedSize":287378,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfHwOdCRA9TVsSAnZWagAAiqwP/A3r9vZ7szV4yU2fJd79\nqwBl8it/NJ4JUggdq8ULM8XIgAuXTZZVq/ykYuoOT7+/9gyZmFFMYiRTjDz7\n3awXEDsdEN1AqNJKA7WQ0o7AhWlmnlh1sRGK91rLCP7FiJ5VAeNYuE2hxwR1\n0stzCupxwFubKsHyJSAGFOm+SvCMo2zNje4F1uE0qtnsgON3vXq34t7U/nvB\n4aPeaYRnY5PGE2FpCjRm18iWA9UXl/5tvQlCjJsjwu3q4/HZYesk2uIYSRQz\nKu1MvQdTCw4OjqYbghMkWYlUR10QnJsi1xzNARadJ/6G2ChLwPF17lChL6EC\nCs5qZ1C5gz8/iaD6M+DPQydUpnz8LojknjUQRYFnv4Eev7jQI3S9D2nAQJ7d\ntGVjpAjwRJOwct6/f4bZWHxFpvvyutQ/omWoTpPMtrHmp2cH1H9XMoJXTIBO\nCeIOwCsb5VxKUuQJwEdODhBVAMmXozEBadDGTLSrefRCahYlZapV+mEs9MJg\n2M+VydmVaoCiuhdqB0wHtcWi6NNXQs3fwLjJCKeJ1xXfdWeWXybmkbBL9aGD\n0YzoS+0pXqX67sUC/3+XQjP8dLa6C2bBOGYEhmJlv4Ka2vo8OdJoA75ndQ0V\nkCNnBkIuj0LmGD2It/IXbl9SPtLyYaFSMRSULc2YhZUesTzcHdA9dFvpwunI\nokhQ\r\n=NhZ6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHv91faBs1jnb+v+L+/yuX4sdaUEG8VVbjJ+A/UeEEPrAiEAxCBTMNNgbVWmaG/iU1VwzKbK2wKZFcgQh5B+dXQJqAc="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.15.0-alpha1_1595868061394_0.20963197740530748"},"_hasShrinkwrap":false},"0.15.0":{"name":"graphql-migrations","version":"0.15.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.15.0","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.4","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.0","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.3.2","ts-jest":"26.1.2"},"devDependencies":{"@types/jest":"26.0.4","@types/lodash":"4.14.157","@types/node":"12.12.50","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.1.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.6"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.15.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-TX92WvlZmdG+q2knQEFIAWoBgmDhqzqMiiB7J+Ng4cx36TR75X54NFUg9f1iEEEwjIJxcVZT+Wlevmee66XxZg==","shasum":"b7d7ed8f0e7246a37d77884bd87f0d08b035fd7c","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.15.0.tgz","fileCount":126,"unpackedSize":287364,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfIsM7CRA9TVsSAnZWagAApIIQAJ8YDd0J9IY9GmO8s/ja\n8FlR7S/kbVTlC9uLiDP/h1OLX+8CygYvZONOvWGHoC+F/wcoBOcIqWl6E9O3\nUQJZq5jKv/OIOHVagT3K2qa14YLgzZE9FjE4kl2ObKCsPahlIPSXX9IoKNkP\nzuEkr1PCYkUBvSslvUScmU6b4QVNgoFJxr3X8cgYvBSytKEG4ZQ2DJMqD1Z7\npdYj4uhYO6YmKRydF0/zSo9w9JeQeyC9KYFGV+hg2NyiK0oiy5wXCNqniWxi\n/m+IPsv5oTjB0TZ5bX5vB0+LywZmBgTOKrjHxR39/6Q18rL2fkX7n2JEiR4q\nov5PON191pn0q2blaGv/dPAkyD/FqnYWeLk4E9jR5y0P5TOY4jhPoP/7+W8A\nhKd2sUAoI8dru2vf+Bf4bEMY/KLjg9o4pAwHcxUWlbkxxmLUdOzo979imLwk\npeaksP3Ml9Yy7vTdt0iO/1KSbq3LGZl9a1fECGLalK1iIj6XHeOIb9AuS2zM\nNpPPbfmFHtQqS8rpZU6CH4eEQQo4plc1w6J2oHqHYPr9rqbRuLRP3DOXSaYn\nToDd9YQNrd9J52cckY3H/8H8wIrZxE6Vemw2chcasD5fx84843PbdOudL4bk\nen8EJ7nBwGycxchSRXqBbI2uuveAqV8iHnQdGArOgwBH3aDjMqTfs+usMsJs\nfTOB\r\n=PTKE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFhetvyCZjnoRi2mq+1MYpYCg47bDGhAEvOARWUStU5wIhAMwJq7hgNzfykwCqu6Qm+G95UD6qlUjQySpgVYSBnC35"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.15.0_1596113723015_0.5693773536739977"},"_hasShrinkwrap":false},"0.15.1":{"name":"graphql-migrations","version":"0.15.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.15.1","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.8","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.4.1","ts-jest":"26.1.4"},"devDependencies":{"@types/jest":"26.0.8","@types/lodash":"4.14.158","@types/node":"12.12.53","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.2.1","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.15.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dSrW4RX9Pt6Cf337+MwFx3Tgaya6k/qD9TpMTCdusttsCjatlPhtz6a8szWQmeBlmSYqjvkb38cfi0S72gnoEQ==","shasum":"ea69a87385c4bf338e302b4823e62663241cdfae","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.15.1.tgz","fileCount":126,"unpackedSize":287365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfI/89CRA9TVsSAnZWagAAMvcP/2G3iUgoUuWIaf/EcPhP\nGiicdX0e+5RqUF4f/u6uk+USQJQVuiMqO0Ro39cq73o/pV/9qAq1qKdrW++u\nd7oekkM5WhI+HBVhBLuLQcCWxd7NgGGqSUvt4ElRJ+XvrrABvfdLdQ1zF0Vr\nKsHovKvBR8Uee4yetAIL7CB/nyAXtU7qPmEyex+By/+UGpUoQC4Nxox3RVrl\nFDA7XBlBrSDTyG1+0DiaOV/Qfy8cR9QDLHQLnVuj/2ZAUj0LetpKbEirR3A5\n6RSzOWK+4wmuGEz7kPRSDeXBsOJs5v74/ocUyg/R7wiiSADo12NYcsK0b4JZ\n+Kq0nMHzqs34Hg8sNvUhgXBNe47Gw9rywmMJbLDEbt/nO6ghlAv2WTpjM/zn\nKVZwBa9Cg/1Iq5jQNnQ05w3+VmyRW+Kicb1/8DMmK1/DZgTqRITI2m8Khmhw\nC6+BTqdJhAtohOdKSXBqww/wM8Ocbvj5mtLuiPloHdWFb9CXS79FtFcRYe36\nRPHGXlZ07oqFVJJJoPO8LarCxQXbKLxg6nWZBX4Mug67rMImE4veRE7EWgmF\ny/hkoCAf4yOmFo7bqlBpWPbDtUUYwxZY5F5JChdiEiMMnvx+K+NJ26QHpeMq\nZ1nt0Bz+jaYntl75m/Qgy+eTYbjd3a3TeIegkf9sf4n7wkWnM6E0P9YPYYeF\npCms\r\n=G8+j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCmvM6nvqE8UJ+JTfg1O0Tv5fZdt3SjcEJBibGVP0ya+QIgQBRV27TniJN0PmnwNVgQmcr1kHv9MoZQ+Dn1XbFzoHE="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.15.1_1596194620917_0.3003835457585373"},"_hasShrinkwrap":false},"0.16.0-alpha1":{"name":"graphql-migrations","version":"0.16.0-alpha1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha1","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.8","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.0","ts-jest":"26.1.4"},"devDependencies":{"@types/jest":"26.0.8","@types/lodash":"4.14.158","@types/node":"12.12.53","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.2.2","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-yRC77EVPoCQxkfDj2igSn4ZCxFXWHxQaprTLYALgvz711eApUX5gQ63PAXqUJ8ysuK7ixT+wTkIjo00Sw2eCgA==","shasum":"516df1c3d6779e77f9c0d32a0b76d6a1ad5206c7","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha1.tgz","fileCount":126,"unpackedSize":287379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ7p0CRA9TVsSAnZWagAA7BEP/0bVIDGJfgS060URs4a8\n1CclutBNV0KPTq4/aSyP+rFEUEoroIvvGd26cDCnkUS6VpMbD1NsDCRQJWbl\nODKg2iht1JtMdFEwOM+3w7ExCy8xvJ9nYj0/ewk5aRBkPhjsWWuaDDR+4RAD\n3cLjR0fbIqnCEQKnP/vdAt18JnZHIPUGOi2HkAZzf4YyUa3FvrJt2hKUb2d7\nPebw99ChkVxWI4nf8ngXVZuGxeowjkRaA4oIU16vAcr+QEKxq3tDsFvIdx1A\n48ubBnFriAgM9/TqkTzSMgroyHrAedPC4USmGh1PW17Y1BKeRA5B0uWQJBLu\nsX6TmJ5cAzPbql8+nHC56TfYeciGM4mDsYzonaLgu5TXRlClsLbqcUJSPt8g\nBSdUrXeTnIQZMa0N4Np6xQlGQ86S2+M2lEoxtMRTUJs01kAtEHFwwzfS41p5\nHjhsCRrKgto32TyFZi+Wtm2wo3i16JVjPZrkzv4RxHm8w9kN2/inv0DY4BRl\nepqqgRX8VoW/1sN+x8mYFGIxnH95Z+VVRp73NLlRX3b+PBONBPWOecVyp4Hg\n+cY6m5POFPJrWp1BwD8AKn/97AAi7fwPx0vy4zR0M01QOxzeLRkYu5tPigSO\nFZ5Ns8BXCtj3vtyaBPHbUOYw3Zc4/l3GeL8EmA4ugR1PkhxokCLRCD1mLWhh\nhz2t\r\n=jiE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfmFOX6q/WznvkrQ+DBUbySzk7BB1DYz9aXM64Pw3HoAiEA++a5728THw6jfdK3jc320MfJ55Y3elprCCbJTc3/lwQ="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha1_1596439155677_0.04767609818986229"},"_hasShrinkwrap":false},"0.16.0-alpha2":{"name":"graphql-migrations","version":"0.16.0-alpha2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha2","@graphql-inspector/core":"2.1.0","@types/jest":"26.0.8","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.2","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.0","ts-jest":"26.1.4"},"devDependencies":{"@types/jest":"26.0.8","@types/lodash":"4.14.158","@types/node":"12.12.53","graphql":"15.3.0","graphql-tools":"6.0.10","jest":"26.2.2","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-K+ahOn7MV4tQfndXcGgmHRGs3Ge5JTpiTZeSaIqZcafG3Johh46vXU8CWRDRWq0TzhuauHpsAYmOaBYy9khP/g==","shasum":"4c1a0c2622a033dbdf932724e92c9e237ff63dbf","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha2.tgz","fileCount":126,"unpackedSize":287379,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfJ+DQCRA9TVsSAnZWagAAN50P/0uW4NQQzCrLg48AoQ5Q\nZcNalGAa6Int1fs3WZP4nD5NWnuu/ql6wnH154aE3yCrR2SKK2kMc+YR2pt4\nAJ7UKbdGeKnobjSnk+V70PSC1a8oqcUYtkvQSAEhW5FlvCEBow2xh0IVlcRw\nqc5UipXiAqS1TTTSRR1EOeGChGzaNRJgzACMoUkeRX/d2c7LlOek3qiIbsMX\nE3/yLwxJRoGiQLP0iIfQTZxaps6TQ+G50OwJqUdehsHwJa2HKJi0BWNulcnX\nXOlEmea4b+2DLHn/fKImxVzwiNYpV4SJHegEW3RrZ+BTkiILEbbLG82P+p+Q\nX06JTkNytxmt3d3ivkfcBgGc0zJJdro6fOVrdFESviWtylAUQjBgkCAyLl99\nlXkSokRmbfrWn0TmW9gzqLA7ywOWOtkfyXFAmbi3eSTwFdw2E/zLoaZvkS8H\n/81xg/4s3HcdsI3ssq4TPqa/FbtaU+GBuukHWF1ypve7fgb+r/Vejmv1OvES\n+SnNezuPB1b2mvgmuHB2HwItQjE9FARihLe+CiyDDgM7ftWVaekLbvNlA/G3\n3drKCJ5iRRJiqyxWi5gxGKZxN0N/TAHWHLINUG0iepRwnlNABDBUz8UuMvhy\nVahAOD4C5Q7vA49oLynZ44mUI8wI2Vq+QdV9paKs3Sf1o2Mf3ydDeXWhY4mZ\nrU40\r\n=qSwC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXBJe9uTnlJa6+kvWoW5akYi4eNa+jF2ct6HHR0P+eMAIgH13rEFf+ehQBkJs9c7l9UJyJ1HU1CbkeE15/mvLrz+U="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha2_1596448976457_0.22350816677231022"},"_hasShrinkwrap":false},"0.16.0-alpha3":{"name":"graphql-migrations","version":"0.16.0-alpha3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha3","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.4","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.0","ts-jest":"26.1.4"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.17","jest":"26.3.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-PVXzZukLdIbrg7CobFCSwQBVfhEzZnvvsmpjBeuHzb+zFz0aqoVRUnJp4x0QPLw7FVbPhGSDeSKlxcPlQbuL1A==","shasum":"fb791b1af256850cc70e076e0ee85f432d25d855","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha3.tgz","fileCount":126,"unpackedSize":286703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfMnR4CRA9TVsSAnZWagAA6NIQAIJDppGGQrVMI0heUbM/\nxj2zkm0oAzcxax/rN4qezSy/BldNzt8Ney4rCeS+6H9iVV/UBwYeqAJSnjtm\n1s526b586kUWautr0HAU4OeWYoGA59D2cFJqMsS32g2ukNEIybmqD56bxUaG\n0sP9jxOm5mcpgY6EiRxPXVVQTVN9Rs9vSYuhHwrzTheWuIIrzripZFtucTes\ndvOULoiacyzAlD3A+5NO18ODALDq/QvBzxchYABSS8YM8CGPtDZ6SU/bBC0X\ny+iBjsZIeX4MC3A6fsCdYwNkTJaUfQiG0REg29Gdo2GGeKpqYFQ4U1QHPtGi\nypiM5xkzejWTjjlryKty9Js0eL7ar64VADxJWkrA/t19SYP+7p+KfvxxFiqE\n+L1574AyiCEBMDT0MTZxNA3DMPz6bbPB1WTCSZOq91HbZfYsoEguQx6zS5sN\nyn0aJMVzLXhmR1X9KBAhhbAAsLUl/IGI/A5asjfpDv+bFpJJ9OhvVXcUzCgw\nT14zVng+0VYoaRODgM4YrwOoBkJULVVL0xbIDzBhdf3CnnuXaGgm7Cug/TsY\n5ITBOcCsaDAvuxonAWYyaOJv7yjm33EDtI8tTr4x/6TQ87FE5DfXJGT/aoSy\nBSdTYwzcEQ4tTrolBdf7RAEuVf5O6xvbjPGfp4BoXwwxvHOsU9WlhSpn+IKK\n1uJE\r\n=ofcq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFM6SCZ1l0SzuS4hUeXMCLz5kgbBXRJM0YkqFNSfzIDuAiAl4y+5CRzL0Uxj0AAzLeVyd9wAzKc+LK/34LIo7PG7rg=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha3_1597142135867_0.9891127716103552"},"_hasShrinkwrap":false},"0.16.0-alpha4":{"name":"graphql-migrations","version":"0.16.0-alpha4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha4","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.4","lodash":"4.17.19","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.0","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.18","jest":"26.3.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"4.2.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-BcHzX4jox8223mwkVr68mMIbK+B+lKapCj6zeyaRrO9MoBgYQOVoZfWpH1rL8XhOUqwxdhyeTza9fyU+r/ZPpg==","shasum":"04391ed97561a6312e97d70debf9174a9d019fb2","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha4.tgz","fileCount":126,"unpackedSize":286703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfM9QbCRA9TVsSAnZWagAAyrgP/Ai5spipVPBMjlr224/0\nsbeXoJl+cc635HhkdaxZMX9QPBHTs1np99VoUAMibTi8GefVXiKWCnis5Tdp\npV+6aQHvCZ4DZ6qx2u/6wQM1YQUzSZ+yNAMV5//AeHE6SBONzNggKyEqMQmX\n/RcPLz/qu23iyaSX3J/f89I6W5M27DnXXdI2GY6j2pMqbTiouYIgLnobABcQ\nxS1UBhO2yBrug1PhB2Gj2ZiljIml+S+NBCZH1kP+EwS14845fkpDY5RB53Ty\n9fBbuUXzNFEdK4CB6OVgbkoBsPO25Vb4mmGhkZyEhCHCKHHpY2OEm94pVOai\nLa+LMZPneWgjv6Ij/NpEydzqdbji0wVhQXosrM3U7QNp3PXHOXez9oz69GEf\nkr0udOu182EN8R+TMwo2XJi5R4dCZMv+k+YePPg0GYeQxxy+fw0ocglN2VA0\niIzfKjaMTcp02pA4lwal+h3y6J2McKjLwYfW5RSUTb7mluCB8ArdHndXBFPU\nHHGzbdx54DmV3h8+Br0Y00g+jz/vKFJbxmRFntAwrpn0i1VLQ6Ab0DytDllJ\nnlUYnaf01Vgw4aM1dykz0BEBsGjK/sBqHzfmLZ5Wh8DVuWzxX7GTqZ9hRb+e\nCuP8jVU5eHpFju0BuGyos3vQap85tAgK0aRq1uMLZR0ecL8nYqNYlYSKdsMU\nVdFF\r\n=F276\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCt7nXJ9ev+56WEekHQFE2sY9YGtEbccz5sho1/U07/IQIgRFgzGTG2XRu3IxOLXGrp+fwpYUSbrCfMEU7d4XR7HvU="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha4_1597232155344_0.5380420164638571"},"_hasShrinkwrap":false},"0.16.0-alpha5":{"name":"graphql-migrations","version":"0.16.0-alpha5","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha5","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.4","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.18","jest":"26.4.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-q3ds1bi19ZdVX0qmeCrorC7vXhltqtqorS5rFpAt247t/4IPWT2Afj0JyXF9XZ3Vy2b9M+W52XSX9TJENZVhlQ==","shasum":"8e7369232f899e848f8e7e7954041c3b6412391b","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha5.tgz","fileCount":126,"unpackedSize":286703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfOtOECRA9TVsSAnZWagAAmxsQAI4nzP4hFEiekCPDBy/k\nLIu00ppe60+UTapCSmNNPhBfXEyTlYxz3YbwJflIcFVZ/3+1DcJH/NkOaVSL\nfSlWSIBWaUTHayrDitfEOxxjSJZZu7c2a845wTOp6xcGDT/YHRhydzFjloZt\n5UIiG7XObegwMh3MeILangtXluiUfywcbZigk+r/s6O8ba3uzJ0JtRp+GOpR\nx9tB7bWXsqkM0qCgQhx2T2CMA2keQNkJjtUk8W+Ae0aDD/ad0BY7X/lBA5c9\nBe8kBHX0HimI8x/S4QwFvRZeyqv4TTjhtt9nu59Ppc95cGWpji1rnVJ1qt1x\nPGYA7d/MuqfuWvJaIZrBwef+mr/0YAKx8duSdjOetPRyaqo5Pj9rB+PaPYkm\nDmj4/t3PlfE+WA4PiTLGJ5N4HIfFOcA62Agypz1Hvz5cXHryFW60Lzf6cIrH\naSBfEikILKKb24KVrM+K8EUxhenwlXbdhxD3uhC0OkhfvKSOXIy96Vzv2sY9\n0Wm0tEoc4S+cB/i/76JerkniAm2naioE9FQ6yakvXKads653S4aA776R5wNt\nxupx+n5pNijpURTb9vJ0PXtIeERnFFxuwS4jB0j/O35/3RI5xDxqxmlZLvNz\nD4oQf6W0kDl62CqVNzRDTd7ItcmSCXeK8OIbeJATkblLZ7C7BfYi1HcY/0qD\nz1P5\r\n=z8dj\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEJgLsCsLOviC7j3KTaN9lWPYSc4tlHvCTAitvLbylQHAiBfmYQ8pDFfCugptzw8FbLoG2tI+qO3mnH5ei9PNOCaKA=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha5_1597690756485_0.07025646102702932"},"_hasShrinkwrap":false},"0.16.0-alpha6":{"name":"graphql-migrations","version":"0.16.0-alpha6","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha6","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","knex":"0.21.4","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.18","jest":"26.4.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-tM/toJVzBS7BAPb1bQevwTDZ7GD/wdc77WrfrRsAzJlFevAH16TMNOkPNnkuusCmoGiqINpzXKkijK5SCN5HeQ==","shasum":"4e8e878c238cd0ef60a41fbc82d93bb09ec12446","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha6.tgz","fileCount":126,"unpackedSize":286703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPAdbCRA9TVsSAnZWagAA9JkP/RxqDswXl0jNsDJW/kyQ\nwQOsYCwFY4w+w3eJCsUwW2NY0rrpqfkH+6AKzHn+N3NV0cgE0mfGhdvbmKMk\nzv5HwTWI//0kPZQF5mdxEG3Qpm0/ZUrlHikjtLW8IgIteFTsQsp+8TSuMeG/\n6wkNK72NKKhzPwgBNnf1zyCYhtwjrkUaZWsw6T3QgoIbGXkKgQ0rOSeiAh/q\n/ZbIxoFF9SGf0aQO36FK4QEPvc9mvzZmVIv4PsW2fZSO3jPslAPTAJy6oQUe\nYc1jiyu5Ig+rR58PhY10iGEzGoj006pUSnw+vvBv5Q0ahmKAXNx/6Iex6wCp\nlwUxmDJioZ8AEDT45eCHcEohWmveeKs2d2Op7TFV8d5s5ae7SnJVPQuOoGBu\nkz6Kgb4+ebyV/50mNJVsvUm2k8yEKYuJuLRWoHXp+UeqgJ9veAtTU6D6gD5c\nx8fqlwC9XAv1LjTIDYFfK8AYQ9dqElYC/ic7jIegTt7Qv4mmK4ov8oeFkycE\n5rkg6Jzar8CzvEzAPhOI/r9peUSxc/kho5XDT6X4BaqOqhUEHQWMh0Dq2Zxd\ngtmaYbAc6ffwxr9JME8+EDfMekJdgIXbZY0USLdiDH+9/SWNYBhzMTps8dO5\nEvJWac+0BDll4J3YB2BcFpzlZsENXrFjDdkOg9LBbNwYiTIaL/uN8eWTr9oJ\nM1qg\r\n=ZKmg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCALtfi+LvF/SwIbZU2wPrfhvnGozA5KlvpzeHzIUBU/gIgGk9A9eafDnsu1LtXBmhxOFo9gFjPi1ubSeKoXI6AV2Q="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha6_1597769562944_0.5252296293972014"},"_hasShrinkwrap":false},"0.16.0-alpha7":{"name":"graphql-migrations","version":"0.16.0-alpha7","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-alpha7","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.18","jest":"26.4.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-alpha7","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-x7mbVf6CFXsZRb0aWp5Tms8H4yc+D2HMKWpFqk9xi53/hRdZChJyfkAgcKj3SIJj3WGHU22lG7fikEdDMiM9XA==","shasum":"b1f111598d28615795d997ffae4d07e362fbafa3","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-alpha7.tgz","fileCount":126,"unpackedSize":286713,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPjzZCRA9TVsSAnZWagAAIQwP/0LzNwCFBlCM7HBxpD3/\nGhBCYd/ZszqcxZCqQ5KUeQkjykM3/AI+s7Nsqa9riSjbkh5EmA5LxfGB0TyC\nF4hX0SdhHl4luB9Z1mf+DmDg7JCJU7i4IbyewECZbX33OJIXtWAN1A2MV9Nl\nE5eUjjthmAufv030V7eFCUY3r+tMFdyaBWt02x+rV3VYq0Z03y9lSWUa4DjA\nHI0jn17yENha9IOXC29qFLvrdKdlMs8HQmIZv+CqIhjr56biZUC8goF9OZQY\nDmxaxNDhhj0k0jR8my0OPU2A18rXs2PH5siAw4gBgh4H6lNXrU/lOoNBcDiK\nqlSfF5GBNIsI3nRTnc6IBr90ueZtM3/LXkXeSu6l1xjPyiKcFTt6I499eNmc\n5embTj6CPZL5TZ96DEJhki1PHVvjHGmGWkIlCfFpFrz+O1Nt5wq8kF7obom/\n9giPQs5CzfFzmzCYTuaD0rUx+ACW8/y7p8HiTLp5Hr39O6c/9Izff8rAcask\nNtHgLD6lZqKjMa/98sezHNLbVxOo9DVEQlpUmiGRH33Us1wzaGG4c+34Haek\n5EfRz+PzmRChi+P7NYAIfoMZCO/E2gYP/b/xCRbx8lYmgqo7UZ9zSjrlFKvk\n3/ZutHu5mjff+jWxPkZ/UVSlLRlzFgeBal7wDz9YxNC2dGcHGSGZ0jFJKOjl\nD1ik\r\n=oIBd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyz+oU5txc9VPet0K+wI3L/vKxEdJvwprtTylZh3Y1mAiBe3HfmWMZvD2FB/I5lscMwc+NdUTs91fXxxaoHzG+jlQ=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-alpha7_1597914329224_0.3203855451004465"},"_hasShrinkwrap":false},"0.16.0-beta1":{"name":"graphql-migrations","version":"0.16.0-beta1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-beta1","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.3","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.0.18","jest":"26.4.0","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"3.9.7"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-beta1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-D19mjLcVEV50FQM9F+btN7iGuChuQdvtLfG30ujJoPgIQ31upUsXmvAmp8N43DOlrRo6j9rO0Goxn2U8R8RmNw==","shasum":"87df1e038dcb7b95f147e1bf7d6bc546c42123a9","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-beta1.tgz","fileCount":126,"unpackedSize":286711,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfPkPPCRA9TVsSAnZWagAA3nMP/RmMtnQeHF4htxsAZYpk\nU9kPrdW7DgUFl81oCPrCHqr8RUR9xSouxiJvCfDodKxnmYAcAIgvNMQq1lJq\nFpfxS6mRO9kXxmrBPJ11kwhngIxYhVM9QN1U2UxH9VNZLn+ul066ubwwPd1x\nFi1sj/W654vUZs+76aXgmZVMUS02LcuOu2u6P6LGInifebEERBA3G/EShEtC\nMsoIqom3iMpj1sjOlveTNnksEFk5iZX5HT8BsbrTX2aJJdzvMmNWvo7qLxf9\nQN2bhspdPKMdEUAEf+O+n30mev0X/jtsytE3DBXy65MGN9zZfQzazkvsF3Mq\ncr5T9lrA0glVlTNHHk7yiwy8vgVtuWWY2vCLVo3Hvx/W15YDpUv2c+AEkasF\n5neZx5K74bwlZ5XCp1yLH3r/utIv3kLnmTcZNDuKaExtjTUHP/iPsKkcLw3e\nAnXyxhA+rT+SgUEctsADXLDu6F0MBZ0nDyZuKL/qPFq5uglmdl0NDhPg+LNf\noN1dDE+Lv4KuY5wtG7PUCa15a1Ote1lU+i/EeWl3gKyTqdyg3LBdbmENWxVf\nYVhiWTA32a78f1CAyMOG1SMKbxwI5Xj/YiSymGuWhfu+EQUrXxpDZgSYVIT7\n0rBREUPdkwPrclzqGd8rL/WawmzGvY8HIjam4kYxG8hrfpYV4n41rgU4QPcz\nFSPf\r\n=SaNe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDT0zlEKVLaPPkGQB8xwdIu8U9HmxAyM7N5e4hdhU6NhQIhANIPVLUTadS54kE4GqyI1HiP+fQnTzDML+5LT6xZmlFC"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-beta1_1597916110736_0.9562657137441595"},"_hasShrinkwrap":false},"0.16.0-beta2":{"name":"graphql-migrations","version":"0.16.0-beta2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-beta2","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.1.0","jest":"26.4.2","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"8.10.2","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-beta2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-RigfLqxew6mjdsEK3GxR49kKKJujRLkA+4mXCBUCxdFeTdEaJK7teNlcdl1N3dvTa3u4feTIxkjAZN1sEw02Jg==","shasum":"113e0ea63b2b4b0107cf9bc7885cdf77770542a1","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-beta2.tgz","fileCount":126,"unpackedSize":287322,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRk1+CRA9TVsSAnZWagAA5R0P+QELviVsZtixG61p0Y+S\nPkgvloC7zUXpnu4znwsioiTtKFWCnQb8z+H6Cow5DgaRAo6F7rK009ZJUkJg\nY0uWs581rEEN3T5ttYHJfABV0T2SlLBFY6X4W2v0JL3Y3EH6W1pAQBN9VCu7\nAUxEymThaKSOjeEGMdtAAPe8fzCQat0nPPK9LfIsVa+oIqzX9EMGM8QUGvp+\n9VfN2NxdMH8EUZfPWwlaYInMPZUnezHlrKAzzcT/dTbOqEZj1kCGEycWO+qO\nq0vTslDfOxCcZGsdm7oGV1HVrydF3VZY/Yn4vys+8mhQlIsZp6U5p/SgxVc0\nNFzixm7/VxfPxIpT3Webr2ckJlXj9141fUecYLnzXRqgZk+xpGpP8lnD9k48\nQma6Ua4OTyMnwCapKzweivQ39NTpHqP8PnscGIg556en9ZS0p1Cxhc9WmH1o\n0UYPJt5vyTJE/YSoXPz7KTmLidYYJnVH94s4y6a5JCTlTOZvq9i65I7Pmg5h\neqbeKtKQMX76nb2NzwWbhb3MJy2LSn6QtgqY0XaEYy9bmGMJeD7+8kaLjvgC\nnNh0UmDTYMolshS5hSTzhjs10czEsj/WIz3FT7NNur+iwGEJVfwzXmC/ewjj\n1vamKCKgN04/e+eslaBpHuD24rGrpYKGtaSE6vMB3mpEx2dXgxmvgxTgEfnh\nkIqy\r\n=zZQz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDEG+VeohRiNkbIadvp0a9JdChCJr4TZhkd5T1XTe6VggIhAK7BKx5npcRN+gpvJ9G63qJjNmejblzoPzrcayM64/G6"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-beta2_1598442878165_0.3554084614403621"},"_hasShrinkwrap":false},"0.16.0-beta3":{"name":"graphql-migrations","version":"0.16.0-beta3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-beta3","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.1.0","jest":"26.4.2","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-beta3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-xMluNouJoEitbmdZntaIugSDuYkUsNuh3XSwwlNHfhqCFRWC8NtjyTldKQ/eKuygzlVrXMw+DP+hWxohs+EnYQ==","shasum":"deb63a88bbcd865f2dc7e70214a74a246443da34","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-beta3.tgz","fileCount":126,"unpackedSize":287321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR5RoCRA9TVsSAnZWagAAXZAP/A1L7/+u+K+0QCZJgc6P\n0lg8iAsYIOj21cc6cgKn3mjVb2zfjL1e7xoa0ldddAx0byTHJGQSaktI4DOi\n7nw2FguM9oY0c4tkbqsZrpzT5NT2Yc8zcxGjA4MqiuJPrixvasaVP8EHjrx9\ntSFOv1QGql9Xc9+NpDTycWI5pqd5qAHNXqHAD1a/qzL6vIVP64m3jZ1UwczZ\nTh2mldW1J52r0hcB9Gp5J0K4JZAZaV9d2Rzm+8cnxRmpeAV/Uzt47QgNofVI\nmmuTs6ZGk5We5bKlVuLiEWo5+hArGyLbRvQNRxm6OpOIXes9yke2yf423uJ6\nddM0luSL7Cxm6nkA6tyxmczMW2g/wvZEGYB2eVxxfGaRPjRAFgh/ftKxcPdK\nhOknrASDG+r19MBVvmCp1h/p1B6ocl8nuk9wa4QsKg6fXoe8nNusInN8Hjqw\n7oWjBaEMN3n0ZQw2p3358ES3JqGU/q1EbjhJVJClkyxgxs3EzV2w0xqDKTVQ\nmWQhX5Ngse4aYhHRYJfUn2uXAUF2/c5ZbMJNqwo7NNYepQfqZE7NSn9ATqGI\nRM6jRAX4MAtmDTVC0xW9ESQlcjewA29+PGeROTE9LUwcDEeI5M4P7sfht3uC\n1pCSwZmb0BYIe0fkZwWW6PPRLxVHJh9mt/bUzqn7+96xbCH0cSo93Qzfsyi9\n05/G\r\n=rZ2i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNmHHJLplt6oxQBYmVVG18cbAH6GGW00zlQfc7d7p8qwIhAIM7NbUBWn9iALtd/SasY4BubB6e2eXSwtJPN2vCbmKq"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-beta3_1598526568322_0.7945214626539543"},"_hasShrinkwrap":false},"0.16.0-beta4":{"name":"graphql-migrations","version":"0.16.0-beta4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0-beta4","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.9","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.2.0"},"devDependencies":{"@types/jest":"26.0.9","@types/lodash":"4.14.159","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.1.0","jest":"26.4.2","pg":"8.3.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@0.16.0-beta4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Wxbn21Dx9Tss0upnt9iCfrIIjNsNhR29TFN/oCPQ1gD4mxpNnl1vKvKjzVv9vQEg39xSC83zyZPcoIci3ICsFA==","shasum":"7f8fe14ae66c289ae42efe7e75aa9d36a884a743","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0-beta4.tgz","fileCount":126,"unpackedSize":287321,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfR++YCRA9TVsSAnZWagAAKqoP/1bSXX3wxd83p0Z6wehj\nuFn2wuQzk00bhaa8b6HkSQaMxiiyQTbGoDyPrw9fUofEGboxelZgei54NfB/\n7FQQ9GoyxwCtjiZYPpPMBVGFmuMoKfdSOzCECu3++GGKph0M8kjqdmyjQjFf\nEUKI6zS/GoXn4wLbtzpkRGgRQK7r4BjhKMJTtTD2Zo4B6b4JfnyRu8G9Z1mx\nsYhbt7ouLLpVybcUK/7i+2Hcg7+9pEMgwwzjXOCHat3lvr+1K1ISNZVw5mkw\nY12qnzOvFCktFBWaMl68U7rOny2W64tVmMl1lsTmg2Cd8q4Pal+461UDEb2i\nWpmQZPcv7bfnONALuxBcZQ/i0lArw8lBXHZDp24n9Ve1YCSRONtfYamNaiz2\nXoGDT9dAo9gLpQ82JPpfZo8GpNa6iusNmK0wUeL2NO6h1+vkG59pyg18998B\n+59lmckmwxiS1D8wPbdqMwCQYv7/4BoxvsGv20nDbdjFA/rFGGZxp+Z5O5rq\n3gg5EO9XwBqTGKzc8C4fAaK27Ct548cVTDlgj+OkKz0iVeodmUqy3ts9lYFv\neo7viTsnG0FguFB1RmA4yT1QxHIowtxNMkXaQNr5JS+Yyc66/LauCEoW1RLV\n7Sgnp5kTE/jc3J8oaypRJz9QhlZHVLKL4tCWGxXPhlpyXfsquFszcDR+vp8s\nnHZ4\r\n=P6Nc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPbQXmeJK3koWfEVJodjc1Fo222dAW4IHJBass37G3TwIhAO43YX6aLpsxkuqFTyNXsAHX9tu/qI6d7UuDEvPBlkXE"}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0-beta4_1598549912350_0.17180975226857131"},"_hasShrinkwrap":false},"0.16.0":{"name":"graphql-migrations","version":"0.16.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.0","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.12","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.3.0"},"devDependencies":{"@types/jest":"26.0.12","@types/lodash":"4.14.161","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.2.0","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.16.0","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-WOzP4Bc2S1jkScev/3tP0sr2Ds7B6/2PwmQbTtDRSnJgr0IqTJkWdMHl+DJ/TWIgVV7IFpxjBHXHnrcLgR6p1A==","shasum":"783738d18e88fc56429e0343109c7f0a4a21fa70","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.0.tgz","fileCount":126,"unpackedSize":287735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfTioHCRA9TVsSAnZWagAAUF4P/RYUzLubRxdkXoQdJfSl\nwykiSfHFaLG3ji2aWexdLqKLYOhEfahnL3vkENPzCs0crh9hLo2m2oGLujF2\n/+c7MXHxx+tJsDWqejjwceOvL4jWvC2zPt3G4XVlI98xl2w/eB3tbiYqXmzV\nbyqJ77DhVOZ1qQJ7wut+RI+/i668axb5duL6n0aFsLcQFUD8YY5REKWN2Ty0\n3e4SibeUCj6uO1T7DyGIn66nG+5mGIxOiCvMZ29wzZNROh+E6aBqGVEugiSn\niqktQgdpro4s1Hg9sY74wTw5KFdvjsA/b6/jeSD7oNLOZZQXZtTnUwrgfkmo\n7EWRLAcYmeOEir16/ZxDBTxw3V5PQYfXhMjcYdYTm2O1agftP497TkZ1moR4\nWECyrYJYXzlmqCPtt9k2XU5afJPDPk3DI8Qy8naw6lwh1NUBFZnZE4B7lWkn\nD4D+L8Rv+wLeZJDiEY/nvEobAw2ny0Mg5bDVjGerzeRfmaQArtk442cjFamu\nL4aV82b9b1g+6faODLLXwMVZI4iR0mxGZ6vtnvqNaToVeoQJnV+V0g2a12mP\nj++yc4b3axkrNwkfHNGDytzM67CSEBH4AxjRNivzaA5BEGXuJBvmOo53PdzU\nvI+tmEPj5CWx7PcmYNGtA6ZXsxsVsS9fnkq8lUhourKtz8dbLqvXyPoMVZrp\nHb5Y\r\n=s+aZ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGkppF66zDjdBmVvbVY7xfkzhgErB+0t0M6XlvnwQVqWAiABOAE+a1Vs8SbwWm8E9GsIKq3RM4ZLqShIVJKYxISW3Q=="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.0_1598958087459_0.42428598983294785"},"_hasShrinkwrap":false},"0.16.1":{"name":"graphql-migrations","version":"0.16.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.1","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.12","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.5.1","ts-jest":"26.3.0"},"devDependencies":{"@types/jest":"26.0.12","@types/lodash":"4.14.161","@types/node":"12.12.54","graphql":"15.3.0","graphql-tools":"6.2.0","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.16.1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-nu19PbRWE48YoY2ubZ1A/bFA7yIi7A6CjdgW82ZP8sGSobA+zHPLZWsMbxOZz8osu6TFzcBDoCZ1kzXw4jdprA==","shasum":"a743a763cb9ffe34c8b2bac23bcfcc6ece9fb0e0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.1.tgz","fileCount":126,"unpackedSize":287735,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfT0/mCRA9TVsSAnZWagAAPfcP/1HLzrzsNaI5ZuDXWsUm\n4ijfiNtvDv7/xN8yy2LfTSGKNwtdUZhdDYrqTJCneDh+m9lndCeFcasBxPil\nGxMMkPYJJTLAiar6Hl0J/fH+CjEoavEtURjnaJck+UVeCgME4Rerk4+woyWs\nd1BcaanRhAb3WY7D+7avIkDj/PuxHjjq2tD3R0DZkiZHYopZUnzBnxJoZ4Cp\nFGGsRKePCJZ2Qr4VLkRkbITpSoDRW9ysIxfjDZKtQpkLKLlXAhIYNa6x1f1T\nDGb926L3oDCvfkiUILhS3C6d8LJN1e9zWLFErOxJf37cxDKgFyWpgkx4PcYG\nL6OXHFn+w48hm9/J7kqbrHSj6FGx5bWrlOVkrCqcc8S3CzWUhKPmcXBV4cCm\nsaviDMHPKO910w+OZl9UZwb3EMDdjk7NSVkHX+OJqqAq4xLAb15EH1Ax7ICU\ndVlHPShlIjVo1iZUmvo+E4p2TRTUVG40926sCbSZw2l9OXipLS11x/BhShSN\n1xCVxsPP57E/Wkk5OZj4yHke3o/fZFXViC1uXUJsI+zrB3Sw3ndp3g9/9Zwr\n46weBwIWX2w/hXUJaGNGZ8qGtSNbaOfGnDaZvTm5Ay5fiR8R/iU+tkl/my05\nms6Hasx7lFo8cCItQKyiP2I+s8KD7PuAulMJptEfYTRt/MTuIZ2rDQabOd+/\ntnEx\r\n=LfVm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTD/g+nxzg6kIoEdOfHk4tWCy+4euaWQyBcKHE/OueUgIgd63eTTcY/tVq22xSR1A5d6vfTlE4kaMd4q/sLgYyjhc="}]},"maintainers":[{"email":"dara.s.hayes@gmail.com","name":"aerogear-ci"},{"email":"ephelan@redhat.com","name":"ephelan"},{"email":"wtrocki@redhat.com","name":"wtrocki"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.1_1599033317698_0.8634605128455473"},"_hasShrinkwrap":false},"0.16.2":{"name":"graphql-migrations","version":"0.16.2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"0.16.2","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.13","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.0","ts-jest":"26.3.0"},"devDependencies":{"@types/jest":"26.0.13","@types/lodash":"4.14.161","@types/node":"12.12.55","graphql":"15.3.0","graphql-tools":"6.2.1","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@0.16.2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UnvJhDPxTnfUBcbbur9uDp9nmkMTKwocFbL38KXi4ahcVO7nG5LWhh68QPaH1GABQnwEROuQKBEyCoZHH0FtpQ==","shasum":"2fe1b74fdef81a8208abc86db9fad35a9d35ae17","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-0.16.2.tgz","fileCount":126,"unpackedSize":289213,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfVkV1CRA9TVsSAnZWagAAjykP/R6T0tHGzaW+gq9yrM5A\nzfClC6R+VczghWrVJyhq243W1Dd8BqPlKOr7jN31ji7mRdrK5tQUGRE5ZgVm\nOHshirscI1RmDmeGsdmlKDROR8F0kiccNczX6KCHQleCzwSTZP15g5HTAkea\n1wo63sapVWrXnJqOTrKbL9W8HPoIp3c5firxmrCursCRKrwSTEftJ66R0+yp\nN5bvCgfNdKbSFi828M44qimm/+MV3h1iXebqBK9sXcIFegRkgpuwiFeXmIjo\ncOeRqoISz5Z3I2/h6qviepJVuA2OZI6coCbUXZ7fIKxg/dTaRVhhQDtsYkTW\nD2BCNvHE/NlMMgD/CqVApv2TStHu0TQuvDSTsbw2I/rQkaX7qIRc5UnNNQg2\nXY9R631AB2DvQ/o6LzVKs/ffHUojyJ3D7uwXpW4hl59umTzXgJaBcp8d78dA\nBc2UzHLOYXGETdc5PxhdxCDqq6bRnERIgYGzz7U9ujIAdq7ypLY1sx6cbXk7\nvO6E/eScejZH0PDR6gJ4qtRX5EaX+dF9AMrhdB3WLMSheW90YWhMU0LLLxA2\n/5TeTZ24CU37enwEDJTuYYEv9Ag5eRwHrZTlhYvK2EjPzyNEttwEwTSEQCe4\n5eJo7h5iyRKbQvCs5al1TLtwFeOoS/mNFzwGbksHUJdBmeDiz0tqO0p40uig\nVPaY\r\n=z+84\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGWI3ijnFa9iSTvzqKwd29w6dOnunjbOhYYNQvXDVpu0AiAGe/v8BLLtA3hP1ssYiIJYXmgsTxRK5s/fQm1d9f/x4Q=="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_0.16.2_1599489396519_0.7487608323335226"},"_hasShrinkwrap":false},"1.0.0-beta1":{"name":"graphql-migrations","version":"1.0.0-beta1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta1","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.13","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.3.0"},"devDependencies":{"@types/jest":"26.0.13","@types/lodash":"4.14.161","@types/node":"12.12.58","graphql":"15.3.0","graphql-tools":"6.2.2","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta1","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-9VYcPrVijeFU82y4bm6G8a0pTvV+tfizP3ud5248JBwRXakF5OXXU/kiCjwfHQETXwfvKXaawEPCcj1cuR5HIA==","shasum":"f4a83256d0e84a7393fa6c041394605aed0cfcf0","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta1.tgz","fileCount":126,"unpackedSize":289223,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYLWJCRA9TVsSAnZWagAAtfIP/iSU3TOooMTyD6mG3wYg\njn7xVQ0+M2qZxuJ7dKBMbNcBVXLPf+qhf54sc62vvc3B8Rd+rqZKiyE6Xd1g\ngcbDTDVyUy5gqelTLsPjQwYLTGM4H6MRCOuRqF3y2NgGcsR3iDoWQ+zD2t52\nSj2GFqIzmsG+m5ZjaHHiKNmqBUyRhV1UagGtXguUwJ785TKx+SandfKbzXNW\n7hNiDth2OGFE5zzGKJkxb7vUcLpqeCZaew+NHUln4ZGV/mXyeK7lAxXxg/Ah\nZ+RLDuUQFbsqO+gOPLVAx4KeCkdx7CEpDbJzB/dNc0THtN5nydvgv9eoE/c7\noY9+7FvHM6K5bk8gGXYXAcTuQn3J4anm6wBN2vVf23K4ltIiOzzbmcH0JlVQ\nKcp8IqWEYEFCq9O5eigWDuhW3rgOU+PCRq90KhkCoXCrIw62UhhQjkrE66ot\nNkR+sTMNgqtGeHv5moyQU09c9zAbaIWOBwoadzgaPNnxaMHbsMVpMzFicDtF\n6Xk4ZMU1c3igFh5ekx12NgzvGFBdV0BDnl82RlpXNorb6G+ZdoipS30ib8b9\nWpqCjaMf5ioOB+2C5mQucEM9ERpFXJNgBVg/q/x1YIkSxqVI3AxzemrGokAJ\n/C4N3Sp3haHxobbPCeO86J2orC8IXIcYzx4w1PqV5SRhncu6jSxA34ejzOaS\niXEl\r\n=ZYpM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCYwcRVr1CraDJnEc1Ym8XBzeTomASHHM4UYyxVyWgy7QIhAMA1F/iLyZHg01RO1BQkQdu0PajSNbVVzs5uTaCQeZ/H"}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta1_1600173448954_0.13059147272230898"},"_hasShrinkwrap":false},"1.0.0-beta2":{"name":"graphql-migrations","version":"1.0.0-beta2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta2","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.3.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.2","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.2"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta2","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-8RJ/Y6mlC0eGb56b4gEZk5jVvfTrnY3amwstfTvdwwD1qNnQ3qMxZ9QmFLjDCAWXOl4kTVgqNyk26rq8eRXllw==","shasum":"0c41773c6b932078e893bf5a8aa75f6c3765997a","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta2.tgz","fileCount":130,"unpackedSize":291874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfZJPjCRA9TVsSAnZWagAAP6sQAJHZpkSwM2qhdXg2dvEl\nOuxS+PxCT/4XZ2wmVLICEUwaFHviy/tBglyYX9vZ+/xTnKmNnDKKLWiuWmRU\n5REXZP1rlTNJpwlPg2msq1HVWA6p7CQzq5iKKmOB56tX5ueKn8w7xj7Xs8Hu\nUfOP4JYymTNCzgHhH5D3cGGchphKKLFyGDJTcFoBYXH98b1eny+rl0DDTAC8\nn8aoevvSWbopgWsOhjDr45LXf2CkBri/l1nVY3RiumgA4XLLFwahr/LqF8pU\nyXGxspGnh4Ea0OYoCu/kiWEiee2oYgELzDSBDmloGsNkA1yoNFWsxYMu0aPC\n8/Lhdxp9t7CZEXyQ8BB+I5OHN4kqN7E8aWiNPI43sMwIRW6JIQVfnBL++xTx\nHtlFuCD4wZ8QnrKqFjAdm7gNrMZuJZfQAxRY+XVSblF18RVQ2dYRYzKk1M2i\nr7Y0O30ddB0Wv6Xv50gG3+5ngWtUGP49oBRmAOENSQMTas+TPJ03vzsrXhTx\n2itI/KhArldKJK9NgU3lm0pzgu7X3LQwqIIqFHzzQCaYYOPU227sk2BdfHFV\n/FwrL0kcPGujUsp7AAWmqMa6BjUae4vOFfgj72odPGJ0Cx33iVTuOxBVkLFy\nRZWZZy89hgJPoAVSao9xXBd0YcGnV9n6xnZ6npL/2nBqbPnLN/+OpbH8Vk7g\nONEb\r\n=oGch\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDHFIZCLmWQFXoJ9TtxzAr4+oo7Io8yLQsEu6gVonaWuAIhAIX1Fi5Y+QHNhAbwB3x3Wj1eutHlnj7ShvugplZwuvK6"}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta2_1600426979275_0.6693329712554281"},"_hasShrinkwrap":false},"1.0.0-beta3":{"name":"graphql-migrations","version":"1.0.0-beta3","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta3","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta3","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-n2mItyFAcGHJYU06ugKbDL8MypQSWdzqLhkq5INf9KBsOwDjLZMXp1eH2k63wDkT7dXgQK8lK9BziKw0Vamy1A==","shasum":"88d14efd4bf6a162a9de7d0e93fbea3c6fb8201c","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta3.tgz","fileCount":130,"unpackedSize":291874,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaGdcCRA9TVsSAnZWagAA7UoQAIHKEqeomd7tVCdKzNEO\nuI1zytAOJT324Etx3Eo4tjdIQY7zMxSPO5Jzgb87BQ7XGeKQ4WwuVSTXVFRd\nPXTPk7UKWDdCLLWG9qUOzuabUDm5gdgdIssnwFtENJGY51zjM7IVUynue9in\nd68+27PesDy/zlJyuIU57O59tUojoUBCRGH9WJ5FV9Iii/CugY2dbpJ0AI6g\n6L2uwZgg6CvaXNNxxZyZr3RyMF6mm5Gz2CWpMYtQtTAPn4vplMxHC1xst9AI\nRGDAD+7TLqDbhaUio66qOyWIuxyOyBw4ZwHPBYBsO7MeNtTkfbp8x8FNjzVH\n/Cbfqbu4kP7vcHTGxZaV22RLUBbkxkDpgfmC9LiNlTP9b1EucZzFM6017VTb\ni3xsxcNgdCXoGUxT+c7GIXkb8gGJ1IAPZcbiqBmLPHAwcPtQUo4douRp2/+S\nz1xuFfWuNmVpb6ZNrzF8bwDhcEogTMpjyVVZrXBf2D756+1aqPI+vQ4RB8TZ\nZuVwHjwSDIstX6w4YRylMTlOkm/U+/ctobXqYYvTSBe/zy7DAoFALqGcoWH4\n7U4ue3Pp1w7hZB7dJysd7UYPE/5dFFvw0O4bbB2uLLVepqMH6zd2hDs1/JD1\nudWZIRA1gU840hCfROeu1GjOyuz2Ph41493GTLuOkyGHg2sDfPKe3DLkob0l\nJokV\r\n=W6el\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCWQlNQuNdWRBvzdQ4GaNgfuhdTvBRYv3RYJPE7mgpm+AIgJl2xhdFxMa60oajXahvfJeqJhLaRthAu7QoEGluVDlw="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta3_1600677723895_0.19509760760861217"},"_hasShrinkwrap":false},"1.0.0-beta4":{"name":"graphql-migrations","version":"1.0.0-beta4","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta4","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta4","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-OhKXNpvz8HaHfwgQiPxUoWlVmkyb9SjShX7aVDg0d0XpKzuYha2YrLvH2e+aA/nRV87w2+5t3UsSqjoP064K2Q==","shasum":"76e1feb7579a9ae3018c821a0aa71e5110227e87","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta4.tgz","fileCount":130,"unpackedSize":292826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfaMYvCRA9TVsSAnZWagAAENcP/24b9Y3LWf8HqyzRA7KK\n2OLSYYxo6zpE+JCvDLW3uL1NS4fJzKaob3b80NGLWYwL7eitbQsmCxPIbYYf\n8/5CSY5AetFMX9uPhvqgtorZ+ykra1k4WoNmlLHsB1dGUxmObfaTRqwWP8qj\n1Eav1TwmO49mHtJRLOll14LWcMperhxhucT0zxUi92035Ik3UDZ8+cN5pK20\nwo+cZIldyIFXSE9293mjFSjXoeIlDn2z6p4iSNnTApQeW40GgxMfqkUjc1Dx\nUo8R2QaG49hC9sTPMMTUMLkaNcXFK5osu6YgHejtQZVrCd7ERa/zHUs1WidI\nYIvHJdyJs2NJfeDmHNbH05r49QQgQurCyukBN/OYG5X61XF9lbgZnhQuFu1/\nvaBYHunnJfSvzXiOmEJJ6t1caU9qxSSYj4ZZ4N5zxp24mpoWpoY+wFJMOMz6\nppdwdXtA23vsFmfFp6k1z3MqQxdh3SdNSKvv9UjCvK4RB1XKR9/lmxzjuwrb\nssrsSRdI5EGZp834YfqHNj6TlC8CH/7xue1GZHiW21Kmy4J0VHBRHB7UjuPx\nzmfC1Pzk6pgXMH5oC2J5+YFwn7JCkxSknEmDfC+JLWa0njsfAncn1+iYgSfV\nkoFV68fz1nR/+1spC5qVyLAO6UPGrn2jDJ5odciXnjCsRr/alJ1JGo5DqS/g\nZfIf\r\n=n1Yp\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC+/DhVbwh7/EgtOXp9Jua/9GtojJab0Q6Flt6q0KiaPAiEAySeE8oJYkiYpX8EC7Xx+BAduEdICxeseuY08fYlqDz0="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta4_1600701998924_0.16173657316286127"},"_hasShrinkwrap":false},"1.0.0-beta5":{"name":"graphql-migrations","version":"1.0.0-beta5","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta5","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta5","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-4z0Jwuw1FUxWfYSaeyHS1hNImOxFT1tQrEo9zQw0YKp1B3aL7qGXmbGN6bdUo/e/oXLONoSuilVFIQLi4roQBg==","shasum":"cce3ec3ce872a05891cb48bc5652982d64f7f47c","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta5.tgz","fileCount":130,"unpackedSize":292826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfahKmCRA9TVsSAnZWagAA3uUQAJaSu4cZcqiWWvUZA0QX\nMsgyTaztplk/RTF2nUsMb0oEP4tyOxe98veqnakoPFt0YxPffX/daZ4MAc8z\ndBaW6128TWxcpozXZ/bahgVl9GjIanIki6pLQdFvNUfM5X/xX5iXIYrM1oMk\nQOArIGQWW06r5KZ9EyXwdIQ1cpvtRh/yL84KtLTGomy/Ysbnz1CD5CyVkB8t\nVkXCkaoOIov7ZjT3Kq8kCwHNjHzPlKTXlXB0IXmtPxCHJhvAjd7zsum0yilD\nCkHwj9q69KJbe7GsRcP9U/EGh70wUktfh8N7s0H3p3cLZKySsKTRa4FX2Cjg\nthmMB6TeFhNOO2mXC4FFMfpPQfpdYFhnoCUXJTDTyu6K7SQyX03OFCoQnnx3\n3yh4ucOaSqIDyub/BMpJZ13h2sXas+q2CuMh6NnOQuJvOrJvwy/4L9OdJeZb\n6XWXvi9vtBsa5P60P82mok9VbH0v0bTi8A6GIqqcPJJwEGyelwBkljlrBffK\nziv0hpqIKK2t1b/4fy9jKKuhvXbHlusVKhQFm6RQziBOeyiNdZedGvjiXI6H\nGwDLLruXHZqzaYWomexx6bMBCz5YeEyXgTKNVX6vo+p+vXDc0ujk51QqNAIA\nVI+m004VlaUyoFJ0P7RbGY0MllCdH0unXk0JuXhGeAjx3tKL0Mnt5TFNq3Iq\nkbEk\r\n=7usO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCechXn30+74iNn4ckHOpDliwWAaTfQ5Latg5eptwtiXgIgcGA6eS1urUD1BaHKAvQ+08H85PQFI96Iw8D87iMP2Fw="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta5_1600787110103_0.892600822880486"},"_hasShrinkwrap":false},"1.0.0-beta6":{"name":"graphql-migrations","version":"1.0.0-beta6","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta6","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta6","_nodeVersion":"12.18.3","_npmVersion":"6.14.6","dist":{"integrity":"sha512-aFwS894QAnaQ5/FcBPkj50dum28K+zP6HI+Dw4aWnUJMXAUgdkFFK4UEzzWKQw9qXoSCY9pY2j91fwtbQxBtNw==","shasum":"9b832bee38643e68d62e31b80ea02d88560ceed4","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta6.tgz","fileCount":130,"unpackedSize":292826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfazyiCRA9TVsSAnZWagAA0l4QAKI6EeqqyZAkfSExgAdM\n4DWbc6lMq9RniihCy754igrBxQ3UhQwCysoIGcnhJ9j0GTiZsoIMhF3jfO2/\nPamMtk+m/c0s4QoOAqhiydZXm4CfAIk8PYdxezxrPuN7FOt4corDZlTvbJcx\nUGy91KO04aaYBQiDgb/o9Z0/8XLJzrqXyR98tfaLp3cX8lZ7axesXqZwU1he\n5uS8eG7p2ebi/09sNyTmkzHLR2EEyG1Jee41U+U8HJHff3QtwTenmVXPDMhJ\nNWF+gHrpqZhHKDSwVe0AMbIiijxqrfA4qXP9bCSj1SZpxvMsQFkdTBZOwE5i\nOK5UuYlywQHYoe8jljbAzJr+WfkFeICPK0VfaBS0e6ZcFDV7LgcxaF6lxhMZ\nwWSX7iQ2W+/jcisUxR/OcvMjDCdbWpKH0207hC78KrxKgZ8za695bpxLWuNa\n9fAM+ER9Bq7pjtlPh3DWBieLcWq02/cz8J9D8lwHBe+tLWdWCQIuPdHom9x7\nc3HXYwRiqcH9+ndHfgpZqLV/E6GMCDJSNlZcNpkbHs7wszVhDXFuTE13L8aC\nlnX//ECRnf5rqfe7+yb5nSWCbwMxRWWgurhNhmm2FcXVVeBxBjOdIWcGpAKu\nNWAvnP8fjarE9AoYf2BUEJS+KVz58n1xb9DiqGz4tEQeNuGX11mSJSFzkvfp\nWInW\r\n=I4IO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICIammMwkPpZ+5ZubToSCyg3nhgLLGZggbS1Se/o3f3DAiAULvMnH4cNqrQtKimROT3Hq1nxM0trpiUOBSg5iyK4UA=="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta6_1600863394387_0.19404660879020108"},"_hasShrinkwrap":false},"1.0.0-beta7":{"name":"graphql-migrations","version":"1.0.0-beta7","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0-beta7","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.0.0-beta7","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-dOd3pd/lk7fFqPV0Rbk9snmb/0IJbDBpALA9lU/Um/Y9iLtQGy0wETQl/Vc9lfDP5EUXqLTTPK61ma/5jN/FBQ==","shasum":"c817ca51b619b4aadc5baecada9b6d4f6538e4de","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0-beta7.tgz","fileCount":130,"unpackedSize":292826,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbLDBCRA9TVsSAnZWagAAQwkQAI7+3IDFVp7MFDKw83MY\nS6AHGaBVts7ZvPHakgw0981obyG2V1tka+EyWH3p0hNHPFOhNM1ajq10Vd2s\nLmOsv4lBdhm7Nu2vVjWGT1NwevdvvuuoZgs83hu2/oMonBOjkT09amoKk3JT\nUbGsU2oEIGio6fAy01BYA0nypm1XZBGlbkIinxN6slxrYI08FYmlhOH+cG+l\nDuhNiQb5fbnh6m7Xgfq6uOZbmj8ekXdk6AAvtNcJKTti3zdtjp6HzzNbxWX0\nfmRG90RXuxjEcL+KmPlHsPANQivr0jjhpvsQGjspvSqvUEDXgGX9O5j0lIeI\nXJLk/cHC5u9E4jkDuaMiMR7q9EWpzOF+1attaifXMfSZb45seHK4D+vVEMEw\nT1cO3Z4mpYxcKbE5MxTchqMKcooevbvxvYDmoGdVmOFGOONOi0YC/+E4JdJb\nnhjhK46+34mvLTYqJfhYAIKRDAKYGSNLH1jYBdm74RK+6GCjb0VrEOBWMt9+\ng9OvLTNY+AnTxMDymo0y1X/K6/lRigX1xa9OgZEPKSZSrLBpipup0C4uf33R\nPpWe8Khd/b4lQsXzJu34QaEQFD/5qTSkPPuvwrDN1ZctuyjwuL5vQxhGEveN\nBacQZUtiYODz003e6OGbDry7tkhSYVsyTBpSMdXdjT+OZt0DAQdA7ed3fZaD\nf/vt\r\n=WiUE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCU34ESpewk//5POMVP7d8Wy9U7y+so0gexuPbctBuULQIhAPI6E0T7zzolJKK1B3xlezRDoFe5XYEQ/FlZDrLyN7ke"}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0-beta7_1600958657180_0.822659899566063"},"_hasShrinkwrap":false},"1.0.0":{"name":"graphql-migrations","version":"1.0.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.0","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@1.0.0","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-Gs+NHQ7rLd0tapecqdvPWcXIRO6OIiDDv5QAu+EswLkN+gCISk0rRyN5jQQE3NaG5Avhve0A6dPuCGI/wV8FFA==","shasum":"6d1e2bfdb31a6bd66aaa12f8b19bce5ef219858a","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.0.tgz","fileCount":130,"unpackedSize":292814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbY1mCRA9TVsSAnZWagAATLsP/1coWxO5r21243nTk+AB\neB2LH6WTWZW+3M+aC5DP7zpMgIDefu4qO+jpcmRw7HtjSPtGQ43MzcKmuGK+\nzg1UQ6CJWUmMF+5E86aWy6+XDaAuDsHbTkX9YeMcPfxXyaP6FTsQeN3v0UKk\ne1e8425CDuubTrRGqjtbVbOkTSOQ782SJ1+nvvwKcn+8hiSwGv7XyS9j21aX\n45+rQY2lPA9LVQbIZBK30cH5yTbdyjhbzK70wapXjywbHWwqa/pLFxEA2zbK\nyCZJCfwIhwYSszc+9118x/Yr/2TT2wY5aPollPrrj827VVdNfFv+WLMu+RcY\ng56rCQBCJbt17YHcjtCRbs8pwp8Q+SdZ92Kgf0ZYPIJZn0NdKPzJ+ZBDr2RF\nilmqKrd7uaGwqte62lsgcSzSAFhQn9vc/7PxsWl3JSzhSyfHnowdQgj+Rqfl\nKMc9KI9jxEOv8dQO2fKLZngqi59TaXECPQpcU6CgoS1RyDkkjeSplBAseWEQ\nd1oeJTpS81pR3at4UqlWI/Gwt6G0/8YvxpJNi6DuUaZvas+r4qW6udJACkT6\nu95BnhiZVIkFG9Zw4ktjW+W4Fi+LLxnM57LyzLjQxeoBAr4fize0a73LghPO\nLm3PMrAP5U3aO7nrw4/MuqMJCp+ak2mWwHUKU+f6h9IH46liR6cJqoftOZpY\njhxR\r\n=NiFO\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn1pmuPPtNyH4ealFMSJSvAW2rchu6DIL9IyE5goMq/gIgbGB7nrjiac0+gxgGa9XDE6B9CqqAwGjMWUwKAxT2HMQ="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.0_1601015141624_0.7969916806352724"},"_hasShrinkwrap":false},"1.0.1":{"name":"graphql-migrations","version":"1.0.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.0.1","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.6.1","ts-jest":"26.4.0"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.62","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.3.3","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@1.0.1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-UfQ2VNW5zBj+DhNr8WbC15GpFNruYKJeyzrGsk7aZi/NJHOHreul/ifcKVKuW2a8s53Fmqwl9z0vtWA7I+AI3A==","shasum":"36c3d2d8ff94e8dbf4092a1365a16c604294c5d6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.0.1.tgz","fileCount":130,"unpackedSize":292814,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfbcDXCRA9TVsSAnZWagAAvZEQAJXBPs+SStQR9aJDvlzx\nTD6+ONKOI1RGkH8y952DDUA6mOxpRwu+3MK6W0cKNwnKZWPl+L+0Et0XrC5z\nc+gaeGLiTlOUNe9h0nLoozfrNnQHG5VwWcRuSDLIceXAaKkjFuMfgxE5M2S5\n1orO4AMmhiJJk4+YPwMgTuYoHGJhvGxLvz/TViFW2x92FgNFpx1sC2IBIV1A\nsvz0zwyUn9TLkHZ1d/bqHdviYIam7+lieffG/h0Qu4Zn6N9rAr58xUQUym2d\nIWITJ5ghubvhgF329E/Hltt0FIg+4L8um8GwgR+kwxilOBKR0dwR+nqe+7HH\nf2qPtQ5SmEKuCiH50xLama5pLyyUppwJEiCrtumeWNmHw+2QN50U992zzDM/\n4JlX0hUwOGQm7dx5J2ugE0FgCrEJZP7YDQ445Nr8+8qeEyAwZiY+jYVQgZOK\nek1ghKEVUsdzY0NkjdEcenFNuLgvW3hqo6LIWF97mtmRvNuU0olneOlGjhbJ\n7hAlzlFd9JLqiRt7OuMWTbbp9cS72U9x3ZCurslYDD0GZHBBsMCHCuLY5Pd7\nLP50rVdH3XHeSrX5i0YWOs76Mz3RtQSzkudVGrIPB/1Q+SVycG4TD/Kb3+Ri\nXWm3WklwalWhjreD9fn8DhWFxWjGh/2s4tbM/FgmNUT+tvVHtDiDteV81RGs\nz6uP\r\n=5zLM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAJpCLRp1FL4wkQN/rD6IWxe+X7z0+qIliaZQz3Uzfl8AiBifSUVDnqBzuhWblg/mRz9jzd2LlDL/DmCnAZXwSPeLA=="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.0.1_1601028310557_0.7571439921956391"},"_hasShrinkwrap":false},"1.1.0-alpha1":{"name":"graphql-migrations","version":"1.1.0-alpha1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.1.0-alpha1","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.7.0","ts-jest":"26.4.1"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.64","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.4.2","pg":"8.4.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.1.0-alpha1","_nodeVersion":"12.18.4","_npmVersion":"6.14.6","dist":{"integrity":"sha512-g0lMF7VRLugWNmZoEAykJeoEKf5QZ6V8MmVPYlyAvQvOCr3SIq30L9/x2VHd3AOdF18UYN4luNAzefB/Ukr41Q==","shasum":"d15407e7be8857d5ceac79847a4c242c3d91b30c","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.1.0-alpha1.tgz","fileCount":160,"unpackedSize":308230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJffynsCRA9TVsSAnZWagAAqLYP/2elHKGewxAXpA1H7EBR\nr9HGILUi8rTSjEdgHqmXgViSNQIvFDucON3keIAqyGGldVfolx2nbjcTHwoQ\nTggijhcAwzMvcYYktuX6Aw2DmB4OOla8DWGo4UhfuntsSqhCTUe9Bn6cg/O2\nsxOomsjOSnQAjGEYIyWjJWBXi9p8+vLsoD9Gg+znSuMR8zk5Fl8q5TP4yY6o\nJNQeQNPWBveHaHQMfh8QNgpixBkOe3wS1wcjXFg7zbuL8CFnKH+MatfrleOG\n2w0gGpFvIoql0nmI0gx2NQTTJvtnjI6q/piXSMwdUJ26cbxX9xMyOiGs98Si\nQqVzh6JfWudx9eAA4PgTD/vRXaHCzGHQoz4TN2y0h4GqjQMtKfN4ASQHFOZU\nvEwcXLUYA78TbhVhFYabI/3kZXjPQ10pxldxb1VOCrCJtyXIRvwQJnH2pCvs\nqGKwwN/ejMYOOtFWltgoEX0nwbm1h/j2TxeDisGxhoByqqXJnTohS82knhIU\nmSz2OF7HYHjQacW9RHhSagzNlpbu2PMnp7xQLZ8qLQeJl+C2L2axtW0B5GCJ\nN7tsVDvSV/egvMuW9mfumRIPH3K9BlY11y5/pSobeDpjAtq4essbUjbT9rS0\ne/kd7VyHkbaMkgoiVR1NPxthXddIgekQILdZLelvruzAFC4+VOqCj+98D1u+\n1VzB\r\n=8wjJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFFn78DoVJd4jd3uGWd1tUAxdeyV6itLiaUtc/zcLPrwIhAI3/0elB+Gblx6LwhZyazXJmMuodH3cDni+ClDR0M/8G"}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.1.0-alpha1_1602169324409_0.38187530376269496"},"_hasShrinkwrap":false},"1.1.0-alpha2":{"name":"graphql-migrations","version":"1.1.0-alpha2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.1.0-alpha2","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.7.0","ts-jest":"26.4.1"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.64","graphql":"15.3.0","graphql-tools":"6.2.3","jest":"26.5.2","pg":"8.4.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","_id":"graphql-migrations@1.1.0-alpha2","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-+fkdJ9sxUCJhNzQ6DHMRni01r9rEipHxSFfhbGyvsdnXOtFtsmulvSRTE+Z2zF6ct3m9Ug76ua6VwCfuvReggw==","shasum":"5430abb6df6ff2405c673a170dd0ba30b7607c42","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.1.0-alpha2.tgz","fileCount":160,"unpackedSize":308230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfjqRsCRA9TVsSAnZWagAA8SgP/ilXJPxQMQ7QNTuqr59P\nseRf3X5VtxoRfPOsvxc9BSDCLnzV/jcA7I2lYb/ObiiRcHYpp2duT32eJK7Q\nbosx/Fadbse7/UCmGjDvaAEunIrxVjWA461An9EwBvLNF3X7uC8pdw4A5gU1\n2uKK+Qqex9mnz/go+GPINmojqoeyitGh3LoW3HOFPJRBHxzpOV+GYsGvt1nK\no2avGDo5mHvEFtPN3A5Y4KVgwSN3W5xyJo704U1wpHqPt+KX6MlsqFrXLi+j\ngrCOs7FYRK1sBMORwpDeDuzd2xLiy5RlLO0sN8NUTV1e7PZ3Iqt2YU1x5djN\nOGalcoGDPqYNdpC8jPtReOzXSPGiKcTWQvIeSnNp+2291ppzH1zLMDjxR5z6\nbyYiMUt1lL3WYDx4EM+fSBa+wNoS5J1DpSJYMxCmQAIj1pKqdt5MOO1Cwibc\n1IVOZMm7JKNIC/ULtGPZNTa2QvdV2DvwniqPJnSHT9bonFdGA9i3BnnugKl6\nIWKmFuGZvvu5eDHiRC1Eg4hQHzgoQGSiApYAKQc4G2DZe8KsYUiB5EsgDsCr\nos7DRHUACe9z4ijNc9W4C14EGjd9ff2GfCdZVbER/VYQDJjHzPbglOLmYW8a\nDRwi5OcBbm7rSIL1Rmudlc8l8W0d/4gx05jyD8h2BchGpppAR5a73Digalb5\nFOh/\r\n=IOQs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDQcIfsRnlUZ5jYSUJq5EWB07BJ2A+pBr9AZQQYYa/iQAIgYlSxq1YjIHUbYUS7Gt0TH0a1iEvfqHQIlxUPdnSpnjA="}]},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.1.0-alpha2_1603183723924_0.5410865731406136"},"_hasShrinkwrap":false},"1.1.0":{"name":"graphql-migrations","version":"1.1.0","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.1.0","@graphql-inspector/core":"2.2.0","@types/jest":"26.0.14","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.7.0","ts-jest":"26.4.1"},"devDependencies":{"@types/jest":"26.0.14","@types/lodash":"4.14.161","@types/node":"12.12.64","graphql":"15.3.0","graphql-tools":"6.2.6","jest":"26.6.3","pg":"8.4.0","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.0.0","tsutils":"3.17.1","typescript":"4.0.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@1.1.0","_nodeVersion":"12.19.0","_npmVersion":"6.14.8","dist":{"integrity":"sha512-0qSATVKWE6Wwii0SA6QRncKffelWP5zgaahPz5TyEqqRaUCxuA3NK0b5DY9lVgWPVebsgX1SX4hXJgiREk6aYw==","shasum":"ec0e43f9d2560793158502568a23087bdc15a8b6","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.1.0.tgz","fileCount":160,"unpackedSize":308216,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfqn4eCRA9TVsSAnZWagAAVrYP/RpKyrTM48aQmEyR5hXf\n8tV4RvRcZexKU7rO+IZE2uNyAWCOy3d81+smSrU3f9GeutLnGqVt5aYU6aIw\nkkrgIUA0S+0SN6e+84b2zeD32eL/D9KSo4ikHIZjeRcaGpU7KQU+Z4HHWksK\n1bsZ4KxZnrOmd+MslryjaLSao+rqIwLFiD0bTOW5lCovOBzEsnaMNyk6iNCj\n1IqI1TBwdpeCixcQdUcn+kD2I3faGQwklEk3iIgL+OtbtK+ute2UwgOePeZ0\nFn7sgLNgun+2tzd9tfRpBPali5v9ZzvwAWeiDf94C8X3Bqazej5cjZSxNYQX\n0aSwdL5oxz0xrS85QuaEhihd8H9sxOmdtFyPokBRtyukYQdnzYgBm//pXiT6\n0e2XUBMHt0fkrfQQqWoJlu8Ctmz6geX1G4bO36NM7YJ4/s9QvMXFM+qdnGq6\n++qhRVHSiLOJbTQADHPHS9maslXXqZKoA9BO3swOSyTVprEq1kEjHFix/RpR\nLhRH1NbITHzgWon+uFrSxX8/1EYXAYFzTfcuyFZ3iE/iT57qY2YjXEU1PYcN\ndsFmxymmbVygMIVGixqNntTJD7UuvqR4/JGy0xgsLQITX3HjNTPcMmgGZ6Lt\n2WqBghWUu6YjjB44qbwVJCDD687RbGARhu2XfmyezRAY+k9ffCUt/P3qdJ2u\nLkUa\r\n=ZrfB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC/pV8FNcsdN6O6FgHpT/utLNqpjMpsl0gzXrt2GnfDkAiBndM6rMSHTlSW/CQww9pqb7vYRoGNpRm7xuUV05BbGsw=="}]},"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.1.0_1605008926005_0.4559551291434607"},"_hasShrinkwrap":false},"1.1.1":{"name":"graphql-migrations","version":"1.1.1","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.1.1","@graphql-inspector/core":"2.3.0","@types/jest":"26.0.19","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.8.0","ts-jest":"26.4.4"},"devDependencies":{"@types/jest":"26.0.19","@types/lodash":"4.14.165","@types/node":"12.19.9","graphql":"15.4.0","graphql-tools":"7.0.2","jest":"26.6.3","pg":"8.5.1","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.1.1","tsutils":"3.17.1","typescript":"4.1.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@1.1.1","_nodeVersion":"12.20.1","_npmVersion":"6.14.10","dist":{"integrity":"sha512-qLt0BzHKtCCgdHBT8Dl9LVzrIBM2zrlJ5BpK3511SYaG68qg6RIUZBdq5wJUHm3wGIHvRo/dGNKX85dLft/uHg==","shasum":"777e827eed8cf1e46a9084ee5783022f80ebe01d","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.1.1.tgz","fileCount":160,"unpackedSize":308362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgHWbiCRA9TVsSAnZWagAAt1EP/idRECZG26hnAxMijJIN\n5bf5F5GUWHxupaZ0IzkzS7kEHFfH4jNQaIPLwOJ7/91cqmKoXqXR7+9Rhj7F\n6l8s3Mc/SJKddaSHDdn0F6ZCUuDNatkrBK0qZjSCgALsGD2tkXDfmNZeN0Bq\nMQ8r0EdshKAIAZowwpytqVt4MZn3JEPIj7J87Bkpr4ixuYyLsjzggv8/C7H6\n+Rt6PjzjUS+osnGDuJhLosSXetl7nfwQAmk0IWacbl6ZnhTJwaditW4LwSC6\n+GCA1zr7N0G+TrlqC1c3jNnz+R3Xj2s/JCQnijznD1FWTFL6Ejk31+fSGLmk\nWEjKr7dyyYzALOV/BUnSjpSfLfBmLKq6lugBis6Z7W/HrYoL4agePVmDshGq\n0TnAMjJbMnA5E221Cn5OHUx+VkJAa7ArnXdddlCnwWLecn+ElbSUsMj3v/fS\n9QjhEJ35nK9HwE6q2gTiAYF3NTroSvyk7Zmx354uYQvTPfxSWzgmohyC/wWG\nw0cFZDN97kGxs7pRLSsJiYi9Gg1kbtDRmapefuiynG4piFIjBWqeae9Ccy6P\n1K8wojxc5eBmKmzZcPFOUA2nmRGaF++SNfqHiGPtqutVP59p8KED6rYDD958\nghs4zlSQnLceNcvBC93hXtuyfXbEqeqBy/rYWfcCxf3osu9mQR5auG12xDIC\nFqmy\r\n=3h8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCiEjMsTINH09MfzX1VLd6Xx4Y7zgcSCtSeQklRqcLs0AIgAQ4KOs6GhSyenT6ky+57S6E+m7ihecoYpxcf0bYvrYI="}]},"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.1.1_1612539617848_0.8912388877873008"},"_hasShrinkwrap":false},"1.1.2":{"name":"graphql-migrations","version":"1.1.2","description":"Create & migrate Databases from GraphQL Schema","main":"dist/index.js","types":"types/index.d.ts","typescript":{"definition":"types/index.d.ts"},"repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"},"homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","scripts":{"clean":"rimraf coverage dist types","build":"tsc","watch":"tsc -w","lint":"eslint -t stylish --project \"tsconfig.json\"","test":"jest"},"dependencies":{"@graphback/core":"1.1.2","@graphql-inspector/core":"2.3.0","@types/jest":"26.0.19","case":"1.6.3","chalk":"3.0.0","glob":"7.1.6","graphql-metadata":"0.7.6","lodash":"4.17.20","lodash-es":"4.17.15","node-emoji":"1.10.0","pino":"6.8.0","ts-jest":"26.4.4"},"devDependencies":{"@types/jest":"26.0.19","@types/lodash":"4.14.165","@types/node":"12.19.9","graphql":"15.4.0","graphql-tools":"7.0.2","jest":"26.6.3","pg":"8.5.1","rimraf":"3.0.2","sqlite3":"5.0.0","ts-node":"9.1.1","tsutils":"3.17.1","typescript":"4.1.3"},"peerDependencies":{"graphql":"^14.0.0 || ^15.0.0","knex":"0.20.x || 0.21.x"},"engines":{"node":">=10.15.3"},"_id":"graphql-migrations@1.1.2","_nodeVersion":"12.20.2","_npmVersion":"6.14.11","dist":{"integrity":"sha512-E2t9MY+q1oKsMcJNrlGdvPWu94KwMuZRhvFZoekCDfQ4CWQhrvcPRNAMI9SqdIVE7DITFGhLNdFRwR1h18/ASA==","shasum":"5023338e7cdd0f2ac4e38a8a2edf43480b814ad4","tarball":"https://registry.npmjs.org/graphql-migrations/-/graphql-migrations-1.1.2.tgz","fileCount":160,"unpackedSize":308362,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNi4aCRA9TVsSAnZWagAAiDIQAIFXY51qj8s/vaCGoF7A\nkCh2381wxaC4VpQrQsqMfc3DHkBPsccYEj4Tg58ax3AdLz3CRAA3CqKADyk6\nAc82bFIUw61zBJ5ifg1Fa3FQTi9Mi3Ix5qXcMS4pezUgwyhMUKEzC0NteKve\neJWDEIba20Jy70tOXmlqsAhK0lLYDR6Pny9aVLagAHU5j5XNRpSOsIT8ij9L\nL6EbOFrbp2cxZfaf2sJp7S3N/lEj4axUsa4FWjKqabT41i/VhwmtFLT7nPeW\nyrVq49usFtxmEvhmaM2HXM3Qs6Q1UarKn+BhMPVFrf2cjZJM39SBsdKyV1hL\njeSzjN61Gry+hZ/f0mxWElWI8IsWPABLT96ikCW0weW5jtHkdv4JysAwAS1z\nFlZoBKv3cPFYeKxUNIYEevo0TkYIDoK4f7ibvkxmQmHT5nNtjNRyZPQaK2sm\nGdxVNNYYCyQchYJkmIvgSpW0uhcSwCK4QL+3LOts+FbpmTmHBn9Jm+Kh6rlN\nQ+offs1jIgR+PShEL6xlHJGDuEdGiU0RKXu3ojb8durse5hQIpWQZgk3gdBq\nay8tdpH/chnZMd+s021o2kaa2x5p5SuNE+fYeqZFxGeVkUFunYl5e3Snv431\nClSqcsnbHHt8/1yVPd7+vs3lzcZV1ppvq5jZ48fsF28VCyNTCZoVfnMeQItH\nLLXP\r\n=nILF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHSdF6k06rLs65groWCrxV6g3xv5x+8rl99ZFy1pc7wJAiAGFdyuJypfFFIracqzF9evGymUb40bjWYqGO1008tOdA=="}]},"_npmUser":{"name":"aerogear-ci","email":"mziccard@redhat.com"},"directories":{},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/graphql-migrations_1.1.2_1614163481835_0.418104877446851"},"_hasShrinkwrap":false}},"time":{"created":"2019-11-13T13:36:21.074Z","0.0.1":"2019-11-13T13:36:21.196Z","modified":"2022-05-04T03:04:20.419Z","0.1.0-dev2":"2019-11-19T09:54:46.359Z","0.10.0-dev2":"2019-11-19T09:58:44.256Z","0.10.0-rc2":"2019-11-23T17:57:07.121Z","0.10.0-dev4":"2019-12-11T16:11:52.351Z","0.10.0-rc3":"2019-12-23T17:49:00.131Z","0.10.0":"2020-01-06T12:50:50.403Z","0.10.1":"2020-01-09T16:04:26.032Z","0.10.2":"2020-01-10T15:56:57.884Z","0.11.0-alpha1":"2020-02-17T10:00:02.698Z","0.11.0-rc1":"2020-02-18T13:22:15.359Z","0.11.0-dev2":"2020-02-21T14:26:01.235Z","0.11.0-dev3":"2020-02-21T16:17:33.607Z","0.11.0-rc2":"2020-02-24T17:29:20.359Z","0.11.0-rc3":"2020-02-24T23:31:25.077Z","0.11.0-rc4":"2020-03-02T17:46:20.129Z","0.11.0-rc5":"2020-03-03T16:55:49.869Z","0.11.0-rc6":"2020-03-08T23:20:57.621Z","0.11.0":"2020-03-09T12:11:44.322Z","0.11.1":"2020-03-10T14:18:05.439Z","0.11.2":"2020-03-11T18:20:52.912Z","0.11.3":"2020-03-27T10:26:33.511Z","0.11.4":"2020-03-31T10:10:18.837Z","0.12.0":"2020-04-20T14:21:38.109Z","0.14.0-dev1":"2020-05-08T12:56:23.996Z","0.14.0-dev2":"2020-05-21T15:41:21.762Z","0.14.0-dev3":"2020-05-25T15:22:19.090Z","0.14.0-alpha1":"2020-05-28T17:33:17.358Z","0.14.0-alpha2":"2020-06-02T15:24:50.632Z","0.12.1":"2020-06-04T08:51:13.043Z","0.14.0-alpha3":"2020-06-09T11:41:01.965Z","0.14.0-alpha4":"2020-06-15T16:33:54.534Z","0.14.0-alpha5":"2020-06-18T23:16:26.489Z","0.14.0-alpha6":"2020-06-22T13:34:38.483Z","0.14.0-alpha7":"2020-06-22T13:53:44.689Z","0.14.0-alpha8":"2020-06-24T13:05:53.987Z","0.14.0-alpha9":"2020-06-25T11:45:43.727Z","0.14.0-alpha10":"2020-06-25T14:55:13.779Z","0.14.0-alpha11":"2020-06-26T14:30:28.445Z","0.14.0-alpha12":"2020-06-29T11:37:12.756Z","0.14.0-alpha13":"2020-06-29T15:17:33.378Z","0.14.0-alpha14":"2020-07-01T11:56:25.015Z","0.14.0-beta1":"2020-07-02T16:00:24.153Z","0.14.0-beta3":"2020-07-03T11:00:44.715Z","0.14.0-beta4":"2020-07-08T09:03:08.770Z","0.14.0-beta5":"2020-07-13T13:33:00.420Z","0.14.0-beta6":"2020-07-15T10:29:14.842Z","0.14.0":"2020-07-20T10:15:20.018Z","0.14.1":"2020-07-27T10:37:32.757Z","0.15.0-alpha1":"2020-07-27T16:41:01.506Z","0.15.0":"2020-07-30T12:55:23.343Z","0.15.1":"2020-07-31T11:23:41.042Z","0.16.0-alpha1":"2020-08-03T07:19:15.810Z","0.16.0-alpha2":"2020-08-03T10:02:56.584Z","0.16.0-alpha3":"2020-08-11T10:35:36.037Z","0.16.0-alpha4":"2020-08-12T11:35:55.511Z","0.16.0-alpha5":"2020-08-17T18:59:16.583Z","0.16.0-alpha6":"2020-08-18T16:52:43.310Z","0.16.0-alpha7":"2020-08-20T09:05:29.538Z","0.16.0-beta1":"2020-08-20T09:35:10.879Z","0.16.0-beta2":"2020-08-26T11:54:38.273Z","0.16.0-beta3":"2020-08-27T11:09:28.538Z","0.16.0-beta4":"2020-08-27T17:38:32.452Z","0.16.0":"2020-09-01T11:01:27.568Z","0.16.1":"2020-09-02T07:55:17.832Z","0.16.2":"2020-09-07T14:36:36.694Z","1.0.0-beta1":"2020-09-15T12:37:29.087Z","1.0.0-beta2":"2020-09-18T11:02:59.407Z","1.0.0-beta3":"2020-09-21T08:42:04.070Z","1.0.0-beta4":"2020-09-21T15:26:39.064Z","1.0.0-beta5":"2020-09-22T15:05:10.279Z","1.0.0-beta6":"2020-09-23T12:16:34.586Z","1.0.0-beta7":"2020-09-24T14:44:17.480Z","1.0.0":"2020-09-25T06:25:41.865Z","1.0.1":"2020-09-25T10:05:10.719Z","1.1.0-alpha1":"2020-10-08T15:02:04.558Z","1.1.0-alpha2":"2020-10-20T08:48:44.388Z","1.1.0":"2020-11-10T11:48:46.230Z","1.1.1":"2021-02-05T15:40:18.043Z","1.1.2":"2021-02-24T10:44:42.101Z"},"maintainers":[{"name":"ephelan","email":"ephelan@redhat.com"},{"name":"wtrocki","email":"wtrocki@redhat.com"},{"name":"aerogear-ci","email":"mziccard@redhat.com"}],"description":"Create & migrate Databases from GraphQL Schema","readme":"## Graphback\n\n<p align=\"center\">\n  <img width=\"400\" src=\"https://raw.githubusercontent.com/aerogear/graphback/master/website/static/img/logo.png\"/>\n  <br/>\n  Auto generate database structure, <br/>\n  GraphQL Resolvers and Queries from GraphQL types 🚀\n</p>\n\n**Documentation**: https://graphback.dev\n**Repository**: https://github.com/aerogear/graphback/\n\n## graphql-migrations\n\nAutomatically create and update your database tables from a GraphQL schema.\n\n### Usage\n\nThe `migrateDB` method creates and updates your tables and columns to match your GraphQL schema.\n\nAll the database operations are wrapped in a single transaction, so your database will be fully rolled back to its initial state if an error occurs.\n\n```ts\nimport { migrateDB } from 'graphql-migrations';\n\nconst dbConfig = {\n  client: 'pg',\n  connection: {\n    host: 'localhost',\n    user: 'your-user',\n    password: 'secret-password',\n    database: 'note-db',\n  },\n};\n\nconst schema = `\ntype Note {\n  id: ID!\n  title: String!\n  description: String\n  comments: [Comment]!\n}\n\ntype Comment {\n  id: ID!\n  description: String\n  note: Note!\n}\n`;\n\nmigrateDB(dbConfig, schema, {\n  // Additional options\n}).then(() => {\n  console.log('Database updated');\n});\n```\n\n### Migration Options\n\n- `config`: database configuration options.\n- `schema`: a GraphQL schema object.\n- `options`:\n  - `dbSchemaName` (default: `'public'`): table schema: `<schemaName>.<tableName>`.\n  - `dbTablePrefix` (default: ''): table name prefix: `<prefix><tableName>`.\n  - `dbColumnPrefix` (default: `''`): column name prefix: `<prefix><columnName>`.\n  - `updateComments`: overwrite comments on table and columns.\n  - `scalarMap` (default: `null`): Custom scalar mapping..\n  - `mapListToJson` (default: `true`): Map scalar lists to JSON column type by default.\n  - `plugins` (default: `[]`): List of graphql-migrations plugins.\n  - `debug` (default: `false`): display debugging information and SQL queries.\n\n### Model Definition\n\n```gql\n\"\"\"\nNotes table\n\"\"\"\ntype Note {\n  \"\"\"\n  Primary key\n  \"\"\"\n  id: ID!\n  \"\"\"\n  The note title\n  \"\"\"\n  title: String!\n}\n```\n\n### Skip table or field\n\n```gql\n\"\"\"\n@db.skip\n\"\"\"\ntype Error {\n  code: Int!\n  message: String!\n}\n\ntype Note {\n  id: ID!\n  title: String\n  \"\"\"\n  @db.skip: true\n  \"\"\"\n  computedField: Boolean\n}\n```\n\n### Rename\n\n```gql\n@db.oldNames: ['task']\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.oldNames: ['text']\n  \"\"\"\n  title: String!\n}\n```\n\n### Nullable and non-nullable field\n\n```gql\ntype Note {\n  id: ID!\n  title: String! # not null\n}\n```\n\n```gql\ntype Note {\n  id: ID!\n  title: String # nullable\n}\n```\n\n### Default value\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  default(value: 'Note title')\n  \"\"\"\n  title: String\n}\n```\n\n### Primary key\n\nEach type must have a primary key. The primary key field must be `id` and the type must be `ID`.\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Foreign key\n\nTo set a foreign key, set a field reference to the related type.\n\n```gql\ntype Comment {\n  id: ID!\n  note: Note! # this creates a `noteId` column in the `comment` table.\n}\n\ntype Note {\n  id: ID!\n  title: String!\n}\n```\n\n### Many-to-many\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'users'\n  \"\"\"\n  messages: [Message]\n}\n\ntype Message {\n  id: ID!\n  \"\"\"\n  @db.manyToMany: 'messages'\n  \"\"\"\n  users: [User]\n}\n```\n\n### Many-to-many on same type\n\n```gql\ntype User {\n  id: ID!\n  friends: [User]\n}\n```\n\n### Simple index\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Multiple index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index\n  \"\"\"\n  id: String!\n\n  \"\"\"\n  @db.index\n  \"\"\"\n  email: String!\n}\n```\n\n### Named index\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\nYou can specify the index type on PostgreSQL.\n\n```gql\ntype User {\n  \"\"\"\n  @db.index: { name: 'myIndex', type: 'hash' }\n  \"\"\"\n  email: String!\n\n  \"\"\"\n  You don't need to specify the type again.\n  @db.index: 'myIndex'\n  \"\"\"\n  name: String!\n}\n```\n\n### Unique constraint\n\n```gql\ntype User {\n  id: ID!\n  \"\"\"\n  @db.unique\n  \"\"\"\n  email: String!\n}\n```\n\n### Custom name\n\n```gql\n\"\"\"\n@db.name: 'people'\n\"\"\"\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.name: 'noteTitle'\n  \"\"\"\n  title: String!\n}\n```\n\n### Custom column type\n\n```gql\ntype Note {\n  id: ID!\n  \"\"\"\n  @db.type: 'string'\n  @db.length: 100\n  \"\"\"\n  title: String!\n}\n```\n\n### List\n\n```gql\ntype Note {\n  id: ID!\n  title: String!\n  \"\"\"\n  @db.types: 'json'\n  \"\"\"\n  comments: [String]\n}\n```\n\nYou can also set `mapListToJson` to `true` in the migrate options to automatically map scalar and enum lists to JSON.\n","readmeFilename":"README.md","homepage":"https://github.com/aerogear/graphback/tree/master/packages/graphql-migrations#readme","repository":{"type":"git","url":"git+https://github.com/aerogear/graphback.git"},"bugs":{"url":"https://github.com/aerogear/graphback/issues"}}