init
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import { BaseModel, column, hasMany } from '@adonisjs/lucid/orm'
|
||||
import type { HasMany } from '@adonisjs/lucid/types/relations'
|
||||
import Notification from '#models/notification'
|
||||
|
||||
export default class Auction extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare auctionNum: string
|
||||
|
||||
@column()
|
||||
declare title: string
|
||||
|
||||
@column()
|
||||
declare description: string | null
|
||||
|
||||
@column()
|
||||
declare organization: string | null
|
||||
|
||||
@column()
|
||||
declare status: string | null
|
||||
|
||||
@column()
|
||||
declare price: number | null
|
||||
|
||||
@column.dateTime()
|
||||
declare deadline: DateTime | null
|
||||
|
||||
@column()
|
||||
declare url: string | null
|
||||
|
||||
@column({
|
||||
prepare: (value: Record<string, any> | null) => (value ? JSON.stringify(value) : null),
|
||||
consume: (value: string | null) => (value ? JSON.parse(value) : null),
|
||||
})
|
||||
declare rawData: Record<string, any> | null
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
|
||||
@hasMany(() => Notification)
|
||||
declare notifications: HasMany<typeof Notification>
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import { BaseModel, column, belongsTo } from '@adonisjs/lucid/orm'
|
||||
import type { BelongsTo } from '@adonisjs/lucid/types/relations'
|
||||
import User from '#models/user'
|
||||
|
||||
export default class Keyword extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare userId: number
|
||||
|
||||
@column()
|
||||
declare keyword: string
|
||||
|
||||
@column()
|
||||
declare isActive: boolean
|
||||
|
||||
@column()
|
||||
declare caseSensitive: boolean
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
|
||||
@belongsTo(() => User)
|
||||
declare user: BelongsTo<typeof User>
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import { BaseModel, column, belongsTo } from '@adonisjs/lucid/orm'
|
||||
import type { BelongsTo } from '@adonisjs/lucid/types/relations'
|
||||
import Auction from '#models/auction'
|
||||
import Keyword from '#models/keyword'
|
||||
|
||||
export default class Notification extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare auctionId: number
|
||||
|
||||
@column()
|
||||
declare keywordId: number
|
||||
|
||||
@column()
|
||||
declare status: 'pending' | 'sent' | 'failed'
|
||||
|
||||
@column()
|
||||
declare errorMessage: string | null
|
||||
|
||||
@column.dateTime()
|
||||
declare sentAt: DateTime | null
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
|
||||
@belongsTo(() => Auction)
|
||||
declare auction: BelongsTo<typeof Auction>
|
||||
|
||||
@belongsTo(() => Keyword)
|
||||
declare keyword: BelongsTo<typeof Keyword>
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
|
||||
export default class ParseLog extends BaseModel {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare parseType: string
|
||||
|
||||
@column()
|
||||
declare status: string
|
||||
|
||||
@column()
|
||||
declare itemsFound: number
|
||||
|
||||
@column()
|
||||
declare errors: string | null
|
||||
|
||||
@column.dateTime()
|
||||
declare startedAt: DateTime
|
||||
|
||||
@column.dateTime()
|
||||
declare completedAt: DateTime | null
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
import { DateTime } from 'luxon'
|
||||
import hash from '@adonisjs/core/services/hash'
|
||||
import { compose } from '@adonisjs/core/helpers'
|
||||
import { BaseModel, column } from '@adonisjs/lucid/orm'
|
||||
import { withAuthFinder } from '@adonisjs/auth/mixins/lucid'
|
||||
|
||||
const AuthFinder = withAuthFinder(() => hash.use('scrypt'), {
|
||||
uids: ['email'],
|
||||
passwordColumnName: 'password',
|
||||
})
|
||||
|
||||
export default class User extends compose(BaseModel, AuthFinder) {
|
||||
@column({ isPrimary: true })
|
||||
declare id: number
|
||||
|
||||
@column()
|
||||
declare email: string
|
||||
|
||||
@column({ serializeAs: null })
|
||||
declare password: string
|
||||
|
||||
@column()
|
||||
declare telegramChatId: string | null
|
||||
|
||||
@column.dateTime({ autoCreate: true })
|
||||
declare createdAt: DateTime
|
||||
|
||||
@column.dateTime({ autoCreate: true, autoUpdate: true })
|
||||
declare updatedAt: DateTime
|
||||
}
|
||||
Reference in New Issue
Block a user