jeeflow dynamic table persist (DynamicTableWriter + PersistPostInterceptor + Meta)
Dependencies
let provider = @persist.InMemoryMetaProvider::new()
let meta = @persist.TableMeta::make("expense", "报销")
meta.add_field(@persist.FieldMeta::make("note", "VARCHAR(200)", "备注"))
provider.register(meta)
let interceptor = @persist.PersistPostInterceptor::make(provider, my_writer)
ctx.register_interceptor(interceptor.as_interceptor()) // order = 100 (post){"persistMode": "ARCHIVE", "relTableName": "expense"}pub(open) trait DynamicTableWriter {
fn insert(Self, String, Map[String, Json]) -> Int64 raise JeeflowError
fn update(Self, String, Int64, Map[String, Json]) -> Unit raise JeeflowError
fn exists(Self, String, Int64) -> Bool raise JeeflowError
fn exists_by_key(Self, String, String, Int64) -> Bool raise JeeflowError
fn update_by_key(Self, String, Map[String, Json], String, Int64) -> Unit raise JeeflowError
fn columns(Self, String, Array[String]) -> Array[String] raise JeeflowError
}pub(all) struct FieldMeta {
column_name : String
column_type : String
display_name : String
nullable : Bool
default_value : String?
permission : Int
}fn InMemoryMetaProvider::get_table_meta(self : InMemoryMetaProvider, table_name : String) -> TableMeta? raise JeeflowErrorimpl DynamicTableWriter for InMemoryTableWriterfn columns(self : InMemoryTableWriter, _table_name : String, candidates : Array[String]) -> Array[String] raise JeeflowErrorfn exists_by_key(self : InMemoryTableWriter, table_name : String, key : String, value : Int64) -> Bool raise JeeflowErrorfn insert(self : InMemoryTableWriter, table_name : String, data : Map[String, Json]) -> Int64 raise JeeflowErrorfn update(self : InMemoryTableWriter, table_name : String, id : Int64, data : Map[String, Json]) -> Unit raise JeeflowErrorfn update_by_key(self : InMemoryTableWriter, table_name : String, data : Map[String, Json], key : String, value : Int64) -> Unit raise JeeflowErrorfn InMemoryTableWriter::get_row(self : InMemoryTableWriter, table_name : String, id : Int64) -> Map[String, Json]?fn InMemoryTableWriter::get_row_by_key(self : InMemoryTableWriter, table_name : String, key : String, value : Int64) -> Map[String, Json]?fn InMemoryTableWriter::get_table_rows(self : InMemoryTableWriter, table_name : String) -> Array[Map[String, Json]]pub(all) struct PersistPostInterceptor {
meta_provider : InMemoryMetaProvider
table_writer : &DynamicTableWriter
}fn PersistPostInterceptor::intercept(self : PersistPostInterceptor, exec : Execution) -> Unit raise JeeflowErrorfn PersistPostInterceptor::make(meta_provider : InMemoryMetaProvider, table_writer : &DynamicTableWriter) -> PersistPostInterceptorInstall
Download zipjeeflow dynamic table persist (DynamicTableWriter + PersistPostInterceptor + Meta)
Dependencies