This commit is contained in:
Vakula Uladimir
2025-10-17 11:27:52 +03:00
commit 12f005e335
72 changed files with 14402 additions and 0 deletions
+48
View File
@@ -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>
}
+30
View File
@@ -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>
}
+37
View File
@@ -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>
}
+31
View File
@@ -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
}
+30
View File
@@ -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
}