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

com.tianyisoft.database.Table.kt Maven / Gradle / Ivy

The newest version!
package com.tianyisoft.database

abstract class Table {
    /**
     * 增加或者更新记录时,只会更新这里指定的字段,其他字段会忽略
     *
     * 键为类属性名,值为数据库对应的字段名,如:
     * ```
     * {
     *  "name": "name",
     *  "firstName": "first_name"
     * }
     * ```
     * */
    abstract fun fillable(): Map

    /**
     * 当所有的属性名和数据库字段名完全一致时,可能使用此方法生成 map, 省去属性名和字段名写两遍的麻烦
     */
    protected fun listToMap(columns: List): Map {
        return columns.fold(mutableMapOf()) { acc, column ->
            acc[column] = column
            acc
        }
    }

    /**
     * 当所有的属性名和数据库字段名有相同的转换规则时,可能使用此方法生成 map, 使用自定义的转换规则 [transformer] 来转换属性名到数据库字段
     */
    protected fun listToMap(columns: List, transformer: (String) -> String): Map {
        return columns.fold(mutableMapOf()) { acc, column ->
            acc[column] = transformer(column)
            acc
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy