{"_id":"@codeartist75/adonis-lucid-polymorphic","_rev":"1-155395f4cb63571ce5cfb230679eebf0","name":"@codeartist75/adonis-lucid-polymorphic","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@codeartist75/adonis-lucid-polymorphic","version":"1.0.1","description":"Adonis Lucid ^4.1.0 Polymorphic Relations Support.","main":"src/Relations","scripts":{"pretest":"npm run test:cleanup && npm run lint","posttest":"npm run test:cleanup && npm run coverage","test:cleanup":"rm -rf test/database && rm -rf test/tmp","test:sqlite":"DB=sqlite node japaFile.js","test:win":"node japaFile.js","test:mysql":"DB=mysql node japaFile.js","test:pg":"DB=pg node japaFile.js","test":"nyc npm run test:sqlite","lint":"standard","lint:fix":"standard --fix","coverage":"nyc report --reporter=text-lcov | coveralls","postversion":"git push --set-upstream origin master && git push --follow-tags"},"lint-staged":{"*.js":["npm run lint:fix","git add"]},"author":{"name":"Evgeny Razumov","url":"enniel"},"license":"MIT","dependencies":{"lodash":"^4.17.11"},"repository":{"type":"git","url":"git+https://github.com/enniel/adonis-lucid-polymorphic.git"},"keywords":["adonis","lucid","adonis-lucid","polymorphic","relations"],"bugs":{"url":"https://github.com/enniel/adonis-lucid-polymorphic/issues"},"homepage":"https://github.com/enniel/adonis-lucid-polymorphic#readme","devDependencies":{"@adonisjs/fold":"^4.0.9","@adonisjs/lucid":"^4.1.0","@adonisjs/sink":"^1.0.17","child_process":"^1.0.2","coveralls":"^3.0.2","dotenv":"^6.1.0","fs-extra":"^7.0.0","husky":"^1.1.2","japa":"^2.0.4","japa-cli":"^1.0.1","lint-staged":"^7.3.0","mysql":"^2.16.0","nyc":"^13.0.1","pg":"^7.5.0","semver":"^5.6.0","sqlite3":"^4.0.2","standard":"^12.0.1"},"standard":{"global":["use"]},"husky":{"hooks":{"pre-commit":"npm run test && lint-staged","pre-push":"npm run test && lint-staged"}},"nyc":{"include":["src","providers"]},"gitHead":"e5d9c892cbb086952bfb7f18ac311e5309d103ef","_id":"@codeartist75/adonis-lucid-polymorphic@1.0.1","_nodeVersion":"14.15.1","_npmVersion":"6.14.4","dist":{"integrity":"sha512-fsv8457+YoIWMpoNoMHtMGTx6lO18XfRxrVzHYzkQ9uNxsaIYOmGdGsRPpS93+1bRpkCJy2Ndw7Owp8IpqqR5A==","shasum":"939517fc0b1aa45e3d3c262dda32678ddf2f4442","tarball":"https://registry.npmjs.org/@codeartist75/adonis-lucid-polymorphic/-/adonis-lucid-polymorphic-1.0.1.tgz","fileCount":12,"unpackedSize":34314,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgLWv0CRA9TVsSAnZWagAAuFUP/0+EWsjRQXdm+5/Jg+xr\nUsSAtkmJ4SKbBRGvu+azaCjIFHB9FWByTgEJtsw1DFkA9nK5cunjHmNBh9SM\ns+y7+rnlwShY43tPVl63bajvUndT0daoKToXa7gKFlyvoPy05f+ukZ49/AMR\ngR6XLM65Anqee18ctmKPayfXScqMVdO4bH96Up/Q49K4Gy9XTfo8uAKzkgAH\n2Od1t3YWwhHXCxjiZp2HBFHxFv01CmqzhebHLcLi0Spbufsk+JAK5hy5oZIi\nWwCUcJtJ6+SMu3JIp3nJXSxrmLYqVMDBoGK4lMmbLGO0qF7v8iO5trcCPBK0\nQzyJlK624nznNPY2nHmGNlw/NdskR1FdmHQvPyFbVA88mGwmvW6tGXHmgOR5\nJILiOFcOzoENvUjJWOhATYjTATUei+rnzk/uR6X61/7L1ZMRQvGbaaKYnXIf\nvDkgWoQgXnFj3Mr1V8JJD9j+vmgLt1LBjr+s9AfLIVoIJrPIzohpSx/z0ztr\nvr4AmH/9exGTVvNQfSPYuPBh4CZ/85rYzFw6xfJNNWjy55FKi+DntVuYlfGM\nlHijH0zn9FYgwgHB1prvhn8in8kSErSxDOsbDpvkQSXcV0gt0W9IKTibdw1C\nqXPduz+eY+kF3YwQeghERGn1vYjzWSHHZLO+uIHOnQvkdJ9X+hpjMDZXjZHB\nY6Rc\r\n=y/4i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDg+jMSCyoRYrNCErz1jlerygZ60gYVgUie5vs9SvVNoAiBPX5sOsHbuvww+M9X2kJWsbpubaaqHWERNTd4Hd1Bapw=="}]},"_npmUser":{"name":"codeartist75","email":"pcstar7000@gmail.com"},"directories":{},"maintainers":[{"name":"codeartist75","email":"pcstar7000@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/adonis-lucid-polymorphic_1.0.1_1613589491720_0.23847780791796147"},"_hasShrinkwrap":false}},"time":{"created":"2021-02-17T19:18:11.685Z","1.0.1":"2021-02-17T19:18:11.860Z","modified":"2022-04-04T23:58:49.165Z"},"maintainers":[{"name":"codeartist75","email":"pcstar7000@gmail.com"}],"description":"Adonis Lucid ^4.1.0 Polymorphic Relations Support.","homepage":"https://github.com/enniel/adonis-lucid-polymorphic#readme","keywords":["adonis","lucid","adonis-lucid","polymorphic","relations"],"repository":{"type":"git","url":"git+https://github.com/enniel/adonis-lucid-polymorphic.git"},"author":{"name":"Evgeny Razumov","url":"enniel"},"bugs":{"url":"https://github.com/enniel/adonis-lucid-polymorphic/issues"},"license":"MIT","readme":"# Adonis Lucid Polymorphic\r\n\r\n[![Build Status](https://travis-ci.org/enniel/adonis-lucid-polymorphic.svg?branch=master)](https://travis-ci.org/enniel/adonis-lucid-polymorphic)\r\n[![Coverage Status](https://coveralls.io/repos/github/enniel/adonis-lucid-polymorphic/badge.svg)](https://coveralls.io/github/enniel/adonis-lucid-polymorphic)\r\n\r\nPolymorphic Relations support for [Adonis Lucid ^4.1.0](http://adonisjs.com/docs/4.1/lucid).\r\n\r\n## Installation\r\n\r\n1. Add package:\r\n\r\n```bash\r\n$ npm i adonis-lucid-polymorphic --save\r\n```\r\nor\r\n\r\n```bash\r\n$ yarn add adonis-lucid-polymorphic\r\n```\r\n\r\n2. Register providers inside the your bootstrap/app.js file.\r\n\r\n```js\r\nconst providers = [\r\n  ...\r\n  'adonis-lucid-polymorphic/providers/PolymorphicProvider',\r\n  ...\r\n]\r\n```\r\n## Examples\r\n\r\n### Table Structure\r\n\r\n```\r\nposts\r\n    id - integer\r\n    title - string\r\n    body - text\r\n\r\nvideos\r\n    id - integer\r\n    title - string\r\n    url - string\r\n\r\ncomments\r\n    id - integer\r\n    body - text\r\n    commentable_id - integer\r\n    commentable_type - string\r\n```\r\n\r\n### Model Structure\r\n\r\n```js\r\n// App/Model/Post\r\n'use strict'\r\n\r\nconst Model = use('Lucid')\r\n\r\nclass Post extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  comments () {\r\n    return this.morphMany('App/Models/Comment', 'id', 'commentable_id', 'commentable_type')\r\n  }\r\n}\r\n\r\nmodule.exports = Post\r\n```\r\n\r\n```js\r\n// App/Model/Video\r\n'use strict'\r\n\r\nconst Model = use('Lucid')\r\n\r\nclass Video extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  comments () {\r\n    return this.morphMany('App/Models/Comment', 'id', 'commentable_id', 'commentable_type')\r\n  }\r\n}\r\n\r\nmodule.exports = Video\r\n```\r\n\r\n```js\r\n// App/Model/Comment\r\n'use strict'\r\n\r\nconst Model = use('Lucid')\r\n\r\nclass Comment extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  commentable () {\r\n    return this.morphTo([\r\n      'App/Models/Post', 'App/Models/Video'\r\n    ], 'id', 'id', 'commentable_id', 'commentable_type')\r\n  }\r\n}\r\n\r\nmodule.exports = Video\r\n```\r\n\r\n## API\r\n\r\n### morphTo(relatedModels, [primaryKey], [relatedPrimaryKey], [morphIdKey], [morphTypeKey])\r\n\r\n```js\r\n...\r\n\r\nclass Comment extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  commentable () {\r\n    return this.morphTo([\r\n      'App/Models/Post', 'App/Models/Video'\r\n    ], 'id', 'id', 'commentable_id', 'commentable_type')\r\n  }\r\n}\r\n\r\n...\r\n```\r\n\r\n### morphMany(relatedModel, [primaryKey], [morphIdKey], [morphTypeKey])\r\n\r\n```js\r\n...\r\n\r\nclass Post extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  comments () {\r\n    return this.morphMany('App/Models/Comment', 'id', 'commentable_id', 'commentable_type')\r\n  }\r\n}\r\n\r\n...\r\n```\r\n\r\n### morphOne(relatedModel, [primaryKey], [morphIdKey], [morphTypeKey])\r\n\r\n```js\r\n...\r\n\r\nclass Publication extends Model {\r\n  static get traits () {\r\n    return ['@provider:Morphable']\r\n  }\r\n\r\n  content () {\r\n    return this.morphOne('App/Models/Content', 'id', 'contentable_id', 'contentable_type')\r\n  }\r\n}\r\n\r\n...\r\n```\r\n\r\n## Credits\r\n\r\n- [Evgeni Razumov](https://github.com/enniel)\r\n\r\n## Support\r\n\r\nHaving trouble? [Open an issue](https://github.com/enniel/adonis-lucid-polymorphic/issues/new)!\r\n\r\n## License\r\n\r\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\r\n","readmeFilename":"README.md"}