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


import com.nisemoe.generated.tables.Beatmaps

import java.time.OffsetDateTime

import org.jooq.Field
import org.jooq.Record1
import org.jooq.Record12
import org.jooq.Row12
import org.jooq.impl.UpdatableRecordImpl


/**
 * This class is generated by jOOQ.
 */
@Suppress("UNCHECKED_CAST")
open class BeatmapsRecord private constructor() : UpdatableRecordImpl<BeatmapsRecord>(Beatmaps.BEATMAPS), Record12<Int?, String?, Int?, String?, String?, Double?, String?, String?, OffsetDateTime?, String?, String?, String?> {

    open var beatmapId: Int?
        set(value): Unit = set(0, value)
        get(): Int? = get(0) as Int?

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

    open var beatmapsetId: Int?
        set(value): Unit = set(2, value)
        get(): Int? = get(2) as Int?

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

    open var source: String?
        set(value): Unit = set(4, value)
        get(): String? = get(4) as String?

    open var starRating: Double?
        set(value): Unit = set(5, value)
        get(): Double? = get(5) as Double?

    open var title: String?
        set(value): Unit = set(6, value)
        get(): String? = get(6) as String?

    open var version: String?
        set(value): Unit = set(7, value)
        get(): String? = get(7) as String?

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

    open var lastReplayCheck: String?
        set(value): Unit = set(9, value)
        get(): String? = get(9) as String?

    open var beatmapFile: String?
        set(value): Unit = set(10, value)
        get(): String? = get(10) as String?

    open var beatmapHash: String?
        set(value): Unit = set(11, value)
        get(): String? = get(11) as String?

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

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

    // -------------------------------------------------------------------------
    // Record12 type implementation
    // -------------------------------------------------------------------------

    override fun fieldsRow(): Row12<Int?, String?, Int?, String?, String?, Double?, String?, String?, OffsetDateTime?, String?, String?, String?> = super.fieldsRow() as Row12<Int?, String?, Int?, String?, String?, Double?, String?, String?, OffsetDateTime?, String?, String?, String?>
    override fun valuesRow(): Row12<Int?, String?, Int?, String?, String?, Double?, String?, String?, OffsetDateTime?, String?, String?, String?> = super.valuesRow() as Row12<Int?, String?, Int?, String?, String?, Double?, String?, String?, OffsetDateTime?, String?, String?, String?>
    override fun field1(): Field<Int?> = Beatmaps.BEATMAPS.BEATMAP_ID
    override fun field2(): Field<String?> = Beatmaps.BEATMAPS.ARTIST
    override fun field3(): Field<Int?> = Beatmaps.BEATMAPS.BEATMAPSET_ID
    override fun field4(): Field<String?> = Beatmaps.BEATMAPS.CREATOR
    override fun field5(): Field<String?> = Beatmaps.BEATMAPS.SOURCE
    override fun field6(): Field<Double?> = Beatmaps.BEATMAPS.STAR_RATING
    override fun field7(): Field<String?> = Beatmaps.BEATMAPS.TITLE
    override fun field8(): Field<String?> = Beatmaps.BEATMAPS.VERSION
    override fun field9(): Field<OffsetDateTime?> = Beatmaps.BEATMAPS.SYS_LAST_UPDATE
    override fun field10(): Field<String?> = Beatmaps.BEATMAPS.LAST_REPLAY_CHECK
    override fun field11(): Field<String?> = Beatmaps.BEATMAPS.BEATMAP_FILE
    override fun field12(): Field<String?> = Beatmaps.BEATMAPS.BEATMAP_HASH
    override fun component1(): Int? = beatmapId
    override fun component2(): String? = artist
    override fun component3(): Int? = beatmapsetId
    override fun component4(): String? = creator
    override fun component5(): String? = source
    override fun component6(): Double? = starRating
    override fun component7(): String? = title
    override fun component8(): String? = version
    override fun component9(): OffsetDateTime? = sysLastUpdate
    override fun component10(): String? = lastReplayCheck
    override fun component11(): String? = beatmapFile
    override fun component12(): String? = beatmapHash
    override fun value1(): Int? = beatmapId
    override fun value2(): String? = artist
    override fun value3(): Int? = beatmapsetId
    override fun value4(): String? = creator
    override fun value5(): String? = source
    override fun value6(): Double? = starRating
    override fun value7(): String? = title
    override fun value8(): String? = version
    override fun value9(): OffsetDateTime? = sysLastUpdate
    override fun value10(): String? = lastReplayCheck
    override fun value11(): String? = beatmapFile
    override fun value12(): String? = beatmapHash

    override fun value1(value: Int?): BeatmapsRecord {
        set(0, value)
        return this
    }

    override fun value2(value: String?): BeatmapsRecord {
        set(1, value)
        return this
    }

    override fun value3(value: Int?): BeatmapsRecord {
        set(2, value)
        return this
    }

    override fun value4(value: String?): BeatmapsRecord {
        set(3, value)
        return this
    }

    override fun value5(value: String?): BeatmapsRecord {
        set(4, value)
        return this
    }

    override fun value6(value: Double?): BeatmapsRecord {
        set(5, value)
        return this
    }

    override fun value7(value: String?): BeatmapsRecord {
        set(6, value)
        return this
    }

    override fun value8(value: String?): BeatmapsRecord {
        set(7, value)
        return this
    }

    override fun value9(value: OffsetDateTime?): BeatmapsRecord {
        set(8, value)
        return this
    }

    override fun value10(value: String?): BeatmapsRecord {
        set(9, value)
        return this
    }

    override fun value11(value: String?): BeatmapsRecord {
        set(10, value)
        return this
    }

    override fun value12(value: String?): BeatmapsRecord {
        set(11, value)
        return this
    }

    override fun values(value1: Int?, value2: String?, value3: Int?, value4: String?, value5: String?, value6: Double?, value7: String?, value8: String?, value9: OffsetDateTime?, value10: String?, value11: String?, value12: String?): BeatmapsRecord {
        this.value1(value1)
        this.value2(value2)
        this.value3(value3)
        this.value4(value4)
        this.value5(value5)
        this.value6(value6)
        this.value7(value7)
        this.value8(value8)
        this.value9(value9)
        this.value10(value10)
        this.value11(value11)
        this.value12(value12)
        return this
    }

    /**
     * Create a detached, initialised BeatmapsRecord
     */
    constructor(beatmapId: Int? = null, artist: String? = null, beatmapsetId: Int? = null, creator: String? = null, source: String? = null, starRating: Double? = null, title: String? = null, version: String? = null, sysLastUpdate: OffsetDateTime? = null, lastReplayCheck: String? = null, beatmapFile: String? = null, beatmapHash: String? = null): this() {
        this.beatmapId = beatmapId
        this.artist = artist
        this.beatmapsetId = beatmapsetId
        this.creator = creator
        this.source = source
        this.starRating = starRating
        this.title = title
        this.version = version
        this.sysLastUpdate = sysLastUpdate
        this.lastReplayCheck = lastReplayCheck
        this.beatmapFile = beatmapFile
        this.beatmapHash = beatmapHash
        resetChangedOnNotNull()
    }
}
