# FMPResource

interface FMPResource : FMPObject

Представляет ресурс на сервере.

#### Since

21.04.01

#### Samples

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример создания ресурса.
     */
    val resource: FMPResource = fmp.resource
    	.name("resource") // Указать название ресурса на сервере.
    	.params("{\"delete_ids\":null,\"upsert_rows\":null}") // Указать параметры ресурса.
    	.build() // Получить FMPResource.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример создания ресурса с дополнительными параметрами.
     */
    val resource: FMPResource = fmp.resource
    	.name("...") // Указать название ресурса на сервере.
    	.params("...") // Указать параметры ресурса.
    	.cacheByParams(true) // Использовать кэширование по параметрам.
    	.delta(true) // Использовать дельту.
    	.filter(true) // Использовать фильтрацию FMPQuery.
    	.build() // Получить FMPResource.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример обращения к базе данных ресурса.
     */
    resource.database.query("CREATE INDEX ...")
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример получения активных транзакций ресурса.
     */
    val transactions: List<FMPTransaction> = resource.getTransactions().result
    transactions.forEach { it.delete() } // Удалить все существующие транзакции ресурса.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример получения метаданных ресурса.
     */
    val meta: FMPResource.Meta = resource.getMeta().result
    val lifetime: String? = meta.lifetime // Получить время жизни кэша ресурса.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример получения списка таблиц ресурса.
     */
    val tables: List<FMPTable> = resource.getTables().result
    tables.forEach { it.name } // Получить список названий всех таблиц.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример ручной загрузки ресурса.
     */
    val transaction: FMPTransaction = fmp.transaction.resource(resource).build()

    val download: FMPResult<Boolean> = resource.download(
    	transaction = transaction, // Указать транзакцию для запроса.
    	filters = listOf(FMPResource.FilterTable("output_table")) // Указать фильтр для загрузки только таблицы с названием output_table.
    ) { progress ->
    	println("progress: $progress") // Вывести прогресс загрузки в консоль.
    }
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример отправки RPC запроса без загрузки данных.
     */
    val rpc: Boolean =
    	resource.rpc().result // true если параметры отправлены на источник, при этом ответ не записан в кэш.
       //sampleEnd
    }

    import ru.fsight.fmp.*
    fun main() {
       //sampleStart
       /*
     * Пример удаления всех данных ресурса.
     */
    val drop: Boolean = resource.dropCache().result // true если локальный кэш ресурса был очищен.
       //sampleEnd
    }

## Types

Builder
Link copied to clipboard
abstract class Builder : FMPObject.Builder

Требуемые параметры: name.

Filter
Link copied to clipboard
fun interface Filter

Общий интерфейс для фильтрации ресурса.

FilterColumn
Link copied to clipboard
class FilterColumn(val name: String, val value: String) : FMPResource.Filter

Фильтрация по колонке. Будут загружены только те строки, значения колонок которых совпадают с указанными.

FilterLimit
Link copied to clipboard
class FilterLimit(val count: Int) : FMPResource.Filter

Ограничить получаемое число строк.

FilterOrder
Link copied to clipboard
class FilterOrder(val columns: String) : FMPResource.Filter

Сортировка по колонкам.

FilterSkip
Link copied to clipboard
class FilterSkip(val count: Int) : FMPResource.Filter

Пропустить указанное число строк.

FilterTable
Link copied to clipboard
class FilterTable(val name: String) : FMPResource.Filter

Фильтрация по таблице. Будет загружена только требуемая таблица из всего ресурса.

Meta
Link copied to clipboard
data class Meta(val id: Int = -1, val name: String = "", val type: String = "", val input: FMPResource.Meta.Input? = null, val output: List<FMPResource.Meta.Argument>? = listOf(), val lifetime: String? = null)

Метаданные ресурса.

## Properties

database
Link copied to clipboard
abstract val database: FMPDatabase

База данных для кэша ресурса.

isCacheByParams
Link copied to clipboard
abstract val isCacheByParams: Boolean

Флаг использования кэша по параметрам. Включение данного флага переименовывает ресурс и его таблицы в формат "$resource_$paramsHash_$table", где paramsHash - sha1 хэш от параметров.

isDelta
Link copied to clipboard
abstract val isDelta: Boolean

Флаг поддержки ресурсом технологии Delta. Позволяет при последующих запросах загружать лишь изменения вместо полных данных.

isFilter
Link copied to clipboard
abstract val isFilter: Boolean

Флаг поддержки ресурсом технологии фильтрации. Позволяет загружать только требуемые по фильтру данные. Автоматически используется в FMPQuery если включено.

name
Link copied to clipboard
abstract val name: String

Название ресурса на сервере.

params
Link copied to clipboard
abstract val params: String

Данные запроса. Содержит данные для вызова процедуры на сервере.

## Functions

download
Link copied to clipboard
abstract fun download(transaction: FMPTransaction? = null, filters: List<FMPResource.Filter>? = null, onProgress: (Double) -> Unit? = null): FMPResult<Boolean>

Загрузить и закэшировать ресурс.

dropCache
Link copied to clipboard
abstract fun dropCache(): FMPResult<Boolean>

Удалить локальный кэш ресурса.

equals
Link copied to clipboard
abstract operator override fun equals(other: Any?): Boolean

Сравнить объекты между собой.

getMeta
Link copied to clipboard
abstract fun getMeta(): FMPResult<FMPResource.Meta>

Метаданные ресурса на сервере.

getTables
Link copied to clipboard
abstract fun getTables(): FMPResult<List<FMPTable>>

Получить список таблиц ресурса в соответствии с его метаданными.

getTransactions
Link copied to clipboard
abstract fun getTransactions(): FMPResult<List<FMPTransaction>>

Получить список существующих транзакций.

hashCode
Link copied to clipboard
abstract override fun hashCode(): Int

Хэш-код объектов. В отличие от equals он будет одинаков для объектов с одинаковыми ключевыми параметрами, но созданными от разных объектов FMP.

rebuild
Link copied to clipboard
abstract override fun rebuild(): FMPResource.Builder
rpc
Link copied to clipboard
abstract fun rpc(): FMPResult<Boolean>

Отправить RPC запрос, игнорируя при этом данные ответа.

toString
Link copied to clipboard
abstract override fun toString(): String

Получить ключевые параметры объекта в виде строки.