/*
 * This file is generated by jOOQ.
 */
package com.nisemoe.generated.tables.records


import com.nisemoe.generated.tables.Users

import java.time.LocalDateTime
import java.time.OffsetDateTime

import org.jooq.Record1
import org.jooq.impl.UpdatableRecordImpl


/**
 * This class is generated by jOOQ.
 */
@Suppress("UNCHECKED_CAST")
open class UsersRecord private constructor() : UpdatableRecordImpl<UsersRecord>(Users.USERS) {

    open var userId: Long?
        set(value): Unit = set(0, value)
        get(): Long? = get(0) as Long?

    open var username: String?
        set(value): Unit = set(1, value)
        get(): String? = get(1) as String?

    open var joinDate: LocalDateTime?
        set(value): Unit = set(2, value)
        get(): LocalDateTime? = get(2) as LocalDateTime?

    open var country: String?
        set(value): Unit = set(3, value)
        get(): String? = get(3) as String?

    open var countryRank: Long?
        set(value): Unit = set(4, value)
        get(): Long? = get(4) as Long?

    open var rank: Long?
        set(value): Unit = set(5, value)
        get(): Long? = get(5) as Long?

    open var ppRaw: Double?
        set(value): Unit = set(6, value)
        get(): Double? = get(6) as Double?

    open var accuracy: Double?
        set(value): Unit = set(7, value)
        get(): Double? = get(7) as Double?

    open var playcount: Long?
        set(value): Unit = set(8, value)
        get(): Long? = get(8) as Long?

    open var totalScore: Long?
        set(value): Unit = set(9, value)
        get(): Long? = get(9) as Long?

    open var rankedScore: Long?
        set(value): Unit = set(10, value)
        get(): Long? = get(10) as Long?

    open var secondsPlayed: Long?
        set(value): Unit = set(11, value)
        get(): Long? = get(11) as Long?

    open var count_100: Long?
        set(value): Unit = set(12, value)
        get(): Long? = get(12) as Long?

    open var count_300: Long?
        set(value): Unit = set(13, value)
        get(): Long? = get(13) as Long?

    open var count_50: Long?
        set(value): Unit = set(14, value)
        get(): Long? = get(14) as Long?

    open var sysLastUpdate: OffsetDateTime?
        set(value): Unit = set(15, value)
        get(): OffsetDateTime? = get(15) as OffsetDateTime?

    @Suppress("INAPPLICABLE_JVM_NAME")
    @set:JvmName("setIsAdmin")
    open var isAdmin: Boolean?
        set(value): Unit = set(16, value)
        get(): Boolean? = get(16) as Boolean?

    open var countMiss: Long?
        set(value): Unit = set(17, value)
        get(): Long? = get(17) as Long?

    @Suppress("INAPPLICABLE_JVM_NAME")
    @set:JvmName("setIsBanned")
    open var isBanned: Boolean?
        set(value): Unit = set(18, value)
        get(): Boolean? = get(18) as Boolean?

    open var approxBanDate: OffsetDateTime?
        set(value): Unit = set(19, value)
        get(): OffsetDateTime? = get(19) as OffsetDateTime?

    // -------------------------------------------------------------------------
    // Primary key information
    // -------------------------------------------------------------------------

    override fun key(): Record1<Long?> = super.key() as Record1<Long?>

    /**
     * Create a detached, initialised UsersRecord
     */
    constructor(userId: Long? = null, username: String? = null, joinDate: LocalDateTime? = null, country: String? = null, countryRank: Long? = null, rank: Long? = null, ppRaw: Double? = null, accuracy: Double? = null, playcount: Long? = null, totalScore: Long? = null, rankedScore: Long? = null, secondsPlayed: Long? = null, count_100: Long? = null, count_300: Long? = null, count_50: Long? = null, sysLastUpdate: OffsetDateTime? = null, isAdmin: Boolean? = null, countMiss: Long? = null, isBanned: Boolean? = null, approxBanDate: OffsetDateTime? = null): this() {
        this.userId = userId
        this.username = username
        this.joinDate = joinDate
        this.country = country
        this.countryRank = countryRank
        this.rank = rank
        this.ppRaw = ppRaw
        this.accuracy = accuracy
        this.playcount = playcount
        this.totalScore = totalScore
        this.rankedScore = rankedScore
        this.secondsPlayed = secondsPlayed
        this.count_100 = count_100
        this.count_300 = count_300
        this.count_50 = count_50
        this.sysLastUpdate = sysLastUpdate
        this.isAdmin = isAdmin
        this.countMiss = countMiss
        this.isBanned = isBanned
        this.approxBanDate = approxBanDate
        resetChangedOnNotNull()
    }
}
