Skip to content
On this page

Kotlin Data Classes

kotlin

Generate Kotlin data classes from SQL schema

Example Output ​

Generated from the pet-store sample schema:

kotlin
import java.math.BigDecimal
import java.time.LocalDateTime
import java.time.OffsetDateTime

data class Adoption(

    val id: Int,
    val petId: Int,
    val ownerId: Int,
    val adoptedAt: LocalDateTime,
    val adoptionFee: BigDecimal

)

data class AdoptionsAuditLog(

    val id: Long,
    val tableName: String,
    val operation: String,
    val oldData: String? = null,
    val newData: String? = null,
    val changedAt: OffsetDateTime

)

data class Category(

    val id: Int,
    val name: String,
    val description: String? = null

)

data class LegacyInventory(

    val id: Int,
    val itemName: String? = null,
    val oldSku: String? = null,
    val quantity: Int? = null

)

data class Location(

    val id: Int,
    val name: String,
    val address: String,
    val city: String,
    val zip: String? = null

)

data class MedicalRecord(

    val id: Int,
    val petId: Int,
    val visitDate: LocalDate,
    val diagnosis: String,
    val treatment: String? = null,
    val vetName: String? = null

)

data class Owner(

    val id: Int,
    val name: String,
    val email: String,
    val phone: String? = null,
    val createdAt: LocalDateTime? = null

)

data class Pet(

    val id: Int,
    val categoryId: Int? = null,
    val name: String,
    val sku: String,
    val price: BigDecimal,
    val internalNotes: String? = null,
    val status: String,
    val createdAt: LocalDateTime? = null

)

data class Review(

    val id: Int,
    val petId: Int,
    val ownerId: Int,
    val rating: Int,
    val body: String? = null,
    val locationId: Int? = null,
    val createdAt: LocalDateTime? = null

)

data class StaffAuditLog(

    val id: Long,
    val tableName: String,
    val operation: String,
    val oldData: String? = null,
    val newData: String? = null,
    val changedAt: OffsetDateTime

)

Usage ​

Add to your sqldoc.config.ts:

typescript
export default {
  dialect: 'postgres',
  schema: ['./schema.sql'],
  codegen: [
    {
      template: 'kotlin-data',
      output: './generated/Models.kt',
    },
  ],
}

Then run:

bash
sqldoc codegen