/**
 * This file is automatically generated
 * DO NOT EDIT manually
 * Run "node ace migration:run" command to re-generate this file
 */

import { BaseModel, column } from '@adonisjs/lucid/orm'
import { DateTime } from 'luxon'

export class BodyfatSchema extends BaseModel {
  static $columns = ['bodyfat', 'createdAt', 'id', 'pk', 'userId'] as const
  $columns = BodyfatSchema.$columns
  @column()
  declare bodyfat: number
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare id: string
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare userId: string
}

export class ExerciseSchema extends BaseModel {
  static $columns = ['bodyweight', 'displayName', 'id'] as const
  $columns = ExerciseSchema.$columns
  @column()
  declare bodyweight: boolean
  @column()
  declare displayName: string
  @column({ isPrimary: true })
  declare id: number
}

export class HeightSchema extends BaseModel {
  static $columns = ['createdAt', 'height', 'id', 'pk', 'userId'] as const
  $columns = HeightSchema.$columns
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare height: number
  @column()
  declare id: string
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare userId: string
}

export class KnexMigrationSchema extends BaseModel {
  static $columns = ['batch', 'id', 'migrationTime', 'name'] as const
  $columns = KnexMigrationSchema.$columns
  @column()
  declare batch: number | null
  @column({ isPrimary: true })
  declare id: number
  @column.dateTime()
  declare migrationTime: DateTime | null
  @column()
  declare name: string | null
}

export class KnexMigrationsLockSchema extends BaseModel {
  static $columns = ['index', 'isLocked'] as const
  $columns = KnexMigrationsLockSchema.$columns
  @column({ isPrimary: true })
  declare index: number
  @column()
  declare isLocked: number | null
}

export class RefreshTokenSchema extends BaseModel {
  static $columns = ['createdAt', 'expiresAt', 'id', 'revokedAt', 'tokenHash', 'userId'] as const
  $columns = RefreshTokenSchema.$columns
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column.dateTime()
  declare expiresAt: DateTime
  @column({ isPrimary: true })
  declare id: number
  @column.dateTime()
  declare revokedAt: DateTime | null
  @column()
  declare tokenHash: string
  @column()
  declare userId: string
}

export class SessionSchema extends BaseModel {
  static $columns = ['blocked', 'client', 'device', 'expires', 'id', 'issuedAt', 'lastActiveAt', 'os', 'pk', 'refreshToken', 'userId'] as const
  $columns = SessionSchema.$columns
  @column()
  declare blocked: boolean | null
  @column()
  declare client: string
  @column()
  declare device: string
  @column.dateTime()
  declare expires: DateTime
  @column()
  declare id: string
  @column.dateTime()
  declare issuedAt: DateTime
  @column.dateTime()
  declare lastActiveAt: DateTime
  @column()
  declare os: string
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare refreshToken: string | null
  @column()
  declare userId: string
}

export class UserSchema extends BaseModel {
  static $columns = ['agreedToTos', 'createdAt', 'dateOfBirth', 'deletedAt', 'email', 'id', 'legacyPassword', 'password', 'passwordChangedAt', 'pk', 'role', 'sex', 'status', 'updatedAt', 'username'] as const
  $columns = UserSchema.$columns
  @column.dateTime()
  declare agreedToTos: DateTime | null
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column.date()
  declare dateOfBirth: DateTime
  @column.dateTime()
  declare deletedAt: DateTime | null
  @column()
  declare email: string
  @column()
  declare id: string
  @column()
  declare legacyPassword: string
  @column({ serializeAs: null })
  declare password: string | null
  @column.dateTime()
  declare passwordChangedAt: DateTime | null
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare role: string
  @column()
  declare sex: string
  @column()
  declare status: string
  @column.dateTime({ autoCreate: true, autoUpdate: true })
  declare updatedAt: DateTime | null
  @column()
  declare username: string
}

export class UserExerciseSchema extends BaseModel {
  static $columns = ['confirmedAt', 'createdAt', 'exerciseId', 'id', 'order', 'pk', 'userId', 'workoutId'] as const
  $columns = UserExerciseSchema.$columns
  @column.dateTime()
  declare confirmedAt: DateTime | null
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare exerciseId: number
  @column()
  declare id: string
  @column()
  declare order: boolean | null
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare userId: string
  @column()
  declare workoutId: string
}

export class UserPrefSchema extends BaseModel {
  static $columns = ['country', 'displayName', 'id', 'locale', 'pk', 'profileVisibility', 'userId'] as const
  $columns = UserPrefSchema.$columns
  @column()
  declare country: string | null
  @column()
  declare displayName: string | null
  @column()
  declare id: string
  @column()
  declare locale: string
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare profileVisibility: string
  @column()
  declare userId: string
}

export class UserSetSchema extends BaseModel {
  static $columns = ['confirmedAt', 'createdAt', 'exerciseId', 'extraWeight', 'id', 'order', 'pk', 'reps', 'userExerciseId', 'userId', 'weight'] as const
  $columns = UserSetSchema.$columns
  @column.dateTime()
  declare confirmedAt: DateTime | null
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare exerciseId: number
  @column()
  declare extraWeight: number | null
  @column()
  declare id: string
  @column()
  declare order: boolean | null
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare reps: number
  @column()
  declare userExerciseId: string
  @column()
  declare userId: string
  @column()
  declare weight: number
}

export class WeightSchema extends BaseModel {
  static $columns = ['createdAt', 'id', 'pk', 'userId', 'weight'] as const
  $columns = WeightSchema.$columns
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare id: string
  @column({ isPrimary: true })
  declare pk: number
  @column()
  declare userId: string
  @column()
  declare weight: number
}

export class WorkoutSchema extends BaseModel {
  static $columns = ['confirmedAt', 'createdAt', 'displayName', 'id', 'pk', 'scheduledDate', 'scheduledTime', 'startedAt', 'userId'] as const
  $columns = WorkoutSchema.$columns
  @column.dateTime()
  declare confirmedAt: DateTime | null
  @column.dateTime({ autoCreate: true })
  declare createdAt: DateTime
  @column()
  declare displayName: string | null
  @column()
  declare id: string
  @column({ isPrimary: true })
  declare pk: number
  @column.date()
  declare scheduledDate: DateTime | null
  @column()
  declare scheduledTime: string | null
  @column.dateTime()
  declare startedAt: DateTime | null
  @column()
  declare userId: string
}
