diff --git a/app/Models/Post.ts b/app/Models/Post.ts index 465c912..f6e36f7 100755 --- a/app/Models/Post.ts +++ b/app/Models/Post.ts @@ -1,10 +1,14 @@ import { DateTime } from 'luxon' -import {BaseModel, column} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, column, manyToMany, ManyToMany} from '@ioc:Adonis/Lucid/Orm' +import Tag from "App/Models/Tag"; export default class Post extends BaseModel { @column({ isPrimary: true }) public id: number + @manyToMany(() => Tag) + public tags: ManyToMany + @column() public slug: string diff --git a/app/Models/Project.ts b/app/Models/Project.ts index 1e41866..128dd21 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -1,6 +1,7 @@ import {DateTime} from 'luxon' -import {BaseModel, BelongsTo, belongsTo, column} from '@ioc:Adonis/Lucid/Orm' +import {BaseModel, BelongsTo, belongsTo, column, ManyToMany, manyToMany} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; +import Tag from "App/Models/Tag"; export default class Project extends BaseModel { @column({ isPrimary: true }) @@ -24,6 +25,9 @@ export default class Project extends BaseModel { @column() public fileId: number + @manyToMany(() => Tag) + public tags: ManyToMany + @column.dateTime({ autoCreate: true }) public createdAt: DateTime diff --git a/database/migrations/1605956711010_posts.ts b/database/migrations/1629148762478_posts.ts similarity index 100% rename from database/migrations/1605956711010_posts.ts rename to database/migrations/1629148762478_posts.ts diff --git a/database/migrations/1629148789980_post_tag.ts b/database/migrations/1629148789980_post_tag.ts new file mode 100644 index 0000000..7dd6b2c --- /dev/null +++ b/database/migrations/1629148789980_post_tag.ts @@ -0,0 +1,27 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class PostTags extends BaseSchema { + protected tableName = 'post_tag' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('post_id') + .unsigned() + .references('posts.id') + .onDelete('CASCADE') + table + .integer('tag_id') + .unsigned() + .references('tags.id') + .onDelete('CASCADE') + table.unique(['post_id', 'tag_id']) + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +} diff --git a/database/migrations/1629149023037_project_tag.ts b/database/migrations/1629149023037_project_tag.ts new file mode 100644 index 0000000..18228fd --- /dev/null +++ b/database/migrations/1629149023037_project_tag.ts @@ -0,0 +1,27 @@ +import BaseSchema from '@ioc:Adonis/Lucid/Schema' + +export default class ProjectTags extends BaseSchema { + protected tableName = 'project_tag' + + public async up () { + this.schema.createTable(this.tableName, (table) => { + table.increments('id').primary() + table + .integer('project_id') + .unsigned() + .references('projects.id') + .onDelete('CASCADE') + table + .integer('tag_id') + .unsigned() + .references('tags.id') + .onDelete('CASCADE') + table.unique(['project_id', 'tag_id']) + table.timestamps(true, true) + }) + } + + public async down () { + this.schema.dropTable(this.tableName) + } +}