All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.petersamokhin.notionsdk.data.model.internal.response.RetrieveDatabaseResponse.kt Maven / Gradle / Ivy

There is a newer version: 0.0.5
Show newest version
package com.petersamokhin.notionsdk.data.model.internal.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
internal data class RetrieveDatabaseResponse(
    val id: String,
    @SerialName("created_time")
    val createdTime: String,
    @SerialName("last_edited_time")
    val lastEditedTime: String,
    val title: List,
    val properties: Map
) {
    fun fullTitle(): String =
        title.joinToString("") { it.plainText }
}

@Serializable
internal data class RetrieveDatabaseTitle(
    @SerialName("plain_text")
    val plainText: String
)

@Serializable
internal sealed class RetrieveDatabaseSchemaProperty {
    abstract val id: String
    abstract val name: String

    @Serializable
    @SerialName("title")
    data class Title(override val id: String, override val name: String) : RetrieveDatabaseSchemaProperty()

    @Serializable
    @SerialName("rich_text")
    data class Text(override val id: String, override val name: String) : RetrieveDatabaseSchemaProperty()

    @Serializable
    @SerialName("number")
    data class Number(
        override val id: String,
        override val name: String,
        val number: Wrapped,
    ) : RetrieveDatabaseSchemaProperty() {
        @Serializable
        data class Wrapped(
            val format: Format
        )

        @Serializable
        enum class Format {
            @SerialName("number")
            Number,
            @SerialName("number_with_commas")
            NumberWithCommas,
            @SerialName("percent")
            Percent,
            @SerialName("dollar")
            Dollar,
            @SerialName("canadian_dollar")
            CanadianDollar,
            @SerialName("euro")
            Euro,
            @SerialName("pound")
            Pound,
            @SerialName("yen")
            Yen,
            @SerialName("ruble")
            Ruble,
            @SerialName("rupee")
            Rupee,
            @SerialName("won")
            Won,
            @SerialName("yuan")
            Yuan,
            @SerialName("real")
            Real,
            @SerialName("lira")
            Lira,
            @SerialName("rupiah")
            Rupiah,
            @SerialName("franc")
            Franc,
            @SerialName("hong_kong_dollar")
            HongKongDollar,
            @SerialName("new_zealand_dollar")
            NewZealandDollar,
            @SerialName("krona")
            Krona,
            @SerialName("norwegian_krone")
            NorwegianKrone,
            @SerialName("mexican_peso")
            MexicanPeso,
            @SerialName("rand")
            Rand,
            @SerialName("new_taiwan_dollar")
            NewTaiwanDollar,
            @SerialName("danish_krone")
            DanishKrone,
            @SerialName("zloty")
            Zloty,
            @SerialName("baht")
            Baht,
            @SerialName("forint")
            Forint,
            @SerialName("koruna")
            Koruna,
            @SerialName("shekel")
            Shekel,
            @SerialName("chilean_peso")
            ChileanPeso,
            @SerialName("philippine_peso")
            PhilippinePeso,
            @SerialName("dirham")
            Dirham,
            @SerialName("colombian_peso")
            ColombianPeso,
            @SerialName("riyal")
            Riyal,
            @SerialName("ringgit")
            Ringgit,
            @SerialName("leu")
            Leu
        }
    }

    @Serializable
    @SerialName("select")
    data class Select(
        override val id: String,
        override val name: String,
        val select: Wrapped
    ) : RetrieveDatabaseSchemaProperty() {
        @Serializable
        data class Wrapped(
            val options: List




© 2015 - 2025 Weber Informatics LLC | Privacy Policy