🗃️ Structure database
This commit is contained in:
parent
73db24d3c0
commit
2f7373f367
13 changed files with 5528 additions and 1 deletions
55
app/models/colle.ts
Normal file
55
app/models/colle.ts
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
import { DateTime } from 'luxon'
|
||||
import { BaseModel, column, hasMany, hasOne } from '@adonisjs/lucid/orm'
|
||||
import User from './user.js'
|
||||
import type { HasMany, HasOne } from '@adonisjs/lucid/types/relations'
|
||||
import Subject from './subject.js'
|
||||
import Room from './room.js'
|
||||
import ColleAttachment from './colle_attachment.js'
|
||||
import Examiner from './examiner.js'
|
||||
|
||||
export default class Colle extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@hasOne(() => User)
|
||||
declare student: HasOne<typeof User>
|
||||
|
||||
@hasOne(() => Examiner)
|
||||
declare examiner: HasOne<typeof Examiner>
|
||||
|
||||
// Bjcolle data
|
||||
@column()
|
||||
declare bjsecret: string
|
||||
|
||||
@column()
|
||||
declare bjid: string
|
||||
|
||||
// Colle data
|
||||
@hasOne(() => Subject)
|
||||
declare subject: HasOne<typeof Subject>
|
||||
|
||||
@hasOne(() => Room)
|
||||
declare room: HasOne<typeof Room>
|
||||
|
||||
@column()
|
||||
declare grade: number
|
||||
|
||||
@column()
|
||||
declare content: string
|
||||
|
||||
@column()
|
||||
declare comment: string
|
||||
|
||||
@hasMany(() => ColleAttachment)
|
||||
declare attachments: HasMany<typeof ColleAttachment>
|
||||
|
||||
// Time data
|
||||
@column.dateTime()
|
||||
declare date: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
}
|
||||
12
app/models/colle_attachment.ts
Normal file
12
app/models/colle_attachment.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
|
||||
export default class ColleAttachment extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare name: string
|
||||
|
||||
@column()
|
||||
declare path: string
|
||||
}
|
||||
9
app/models/examiner.ts
Normal file
9
app/models/examiner.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
|
||||
export default class Examiner extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare name: string
|
||||
}
|
||||
9
app/models/room.ts
Normal file
9
app/models/room.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
|
||||
export default class Room extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare name: string
|
||||
}
|
||||
9
app/models/subject.ts
Normal file
9
app/models/subject.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
|
||||
export default class Subject extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare name: string
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ export default class extends BaseSchema {
|
|||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').notNullable()
|
||||
table.increments('id').primary()
|
||||
table.string('class_name', 10).notNullable()
|
||||
table.string('first_name', 50).notNullable()
|
||||
table.string('last_name', 50).notNullable()
|
||||
|
|
|
|||
16
database/migrations/1751803537457_create_rooms_table.ts
Normal file
16
database/migrations/1751803537457_create_rooms_table.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
export default class extends BaseSchema {
|
||||
protected tableName = 'rooms'
|
||||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary()
|
||||
table.string('name').notNullable()
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
16
database/migrations/1751803556566_create_subjects_table.ts
Normal file
16
database/migrations/1751803556566_create_subjects_table.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
export default class extends BaseSchema {
|
||||
protected tableName = 'subjects'
|
||||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary()
|
||||
table.string('name').notNullable()
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
16
database/migrations/1751803858736_create_examiners_table.ts
Normal file
16
database/migrations/1751803858736_create_examiners_table.ts
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
export default class extends BaseSchema {
|
||||
protected tableName = 'examiners'
|
||||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary()
|
||||
table.string('name').notNullable()
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
35
database/migrations/1751804476638_create_colles_table.ts
Normal file
35
database/migrations/1751804476638_create_colles_table.ts
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
export default class extends BaseSchema {
|
||||
protected tableName = 'colles'
|
||||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary();
|
||||
|
||||
// Relations
|
||||
table.integer('student_id').unsigned().references('id').inTable('users').onDelete('CASCADE');
|
||||
table.integer('examiner_id').unsigned().references('id').inTable('examiners').onDelete('CASCADE');
|
||||
table.integer('subject_id').unsigned().references('id').inTable('subjects').onDelete('SET NULL');
|
||||
table.integer('room_id').unsigned().references('id').inTable('rooms').onDelete('SET NULL');
|
||||
|
||||
// Bjcolle data
|
||||
table.string('bjsecret').nullable()
|
||||
table.string('bjid').nullable()
|
||||
|
||||
// Colle data
|
||||
table.decimal('grade', 5, 2).nullable()
|
||||
table.text('content').nullable()
|
||||
table.text('comment').nullable()
|
||||
|
||||
// Time data
|
||||
table.dateTime('date').notNullable()
|
||||
table.timestamp('created_at').notNullable()
|
||||
table.timestamp('updated_at').notNullable()
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
import { BaseSchema } from '@adonisjs/lucid/schema'
|
||||
|
||||
export default class extends BaseSchema {
|
||||
protected tableName = 'colle_attachments'
|
||||
|
||||
async up() {
|
||||
this.schema.createTable(this.tableName, (table) => {
|
||||
table.increments('id').primary()
|
||||
table.string('name').notNullable()
|
||||
table.string('path').notNullable()
|
||||
table
|
||||
.integer('colle_id')
|
||||
.unsigned()
|
||||
.references('colles.id')
|
||||
.onDelete('CASCADE')
|
||||
})
|
||||
}
|
||||
|
||||
async down() {
|
||||
this.schema.dropTable(this.tableName)
|
||||
}
|
||||
}
|
||||
5315
pnpm-lock.yaml
generated
Normal file
5315
pnpm-lock.yaml
generated
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -31,3 +31,16 @@ if (app.inDev) {
|
|||
router.post('users', [UserController, 'create'])
|
||||
}
|
||||
router.get('/users/@me', [UserController, 'me']).use(middleware.auth())
|
||||
|
||||
|
||||
|
||||
// TEST ROUTE
|
||||
import redis from '@adonisjs/redis/services/main'
|
||||
|
||||
router.get('/', async () => {
|
||||
await redis.publish("jobs_queue", JSON.stringify({
|
||||
type: 2
|
||||
}))
|
||||
return { message: 'Hello, world!' }
|
||||
})
|
||||
// END TEST ROUTE
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue