jeeflow-persist

    jeeflow dynamic table persist (DynamicTableWriter + PersistPostInterceptor + Meta)

    Download zip
    Author
    Version
    0.1.0
    License
    Apache-2.0
    Last updated
    5 hours ago
    Downloads
    3

    Dependencies

    #persist

    jeeflow 工作流引擎 MoonBit 实现(第 7 语言)组件:业务数据动态入库:DynamicTableWriter + PersistPostInterceptor(ARCHIVE/SYNC)+ 元数据

    详见仓根 README.md 与 docs/。

    DynamicTableWriter

    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

    }

    DynamicTableWriter trait(MoonBit:大接口 trait 形态)

    FieldMeta

    pub(all) struct FieldMeta {
    column_name : String
    column_type : String
    display_name : String
    nullable : Bool
    default_value : String?
    permission : Int
    }

    字段元数据(动态表列)

    FieldMeta::is_editable

    fn FieldMeta::is_editable(self : FieldMeta) -> Bool

    FieldMeta::is_visible

    fn FieldMeta::is_visible(self : FieldMeta) -> Bool

    FieldMeta::make

    fn FieldMeta::make(column_name : String, column_type : String, display_name : String) -> FieldMeta

    InMemoryMetaProvider

    pub(all) struct InMemoryMetaProvider {
    tables : Map[String, TableMeta]
    }

    IDynamicMetaProvider 内存实现

    InMemoryMetaProvider::get_table_meta

    InMemoryMetaProvider::list_table_names

    fn InMemoryMetaProvider::list_table_names(self : InMemoryMetaProvider) -> Array[String]

    InMemoryMetaProvider::new

    InMemoryMetaProvider::register

    fn InMemoryMetaProvider::register(self : InMemoryMetaProvider, meta : TableMeta) -> Unit

    InMemoryTableWriter

    pub(all) struct InMemoryTableWriter {
    id_counter : Int64
    tables : Map[String, Map[Int64, Map[String, Json]]]
    }

    InMemoryTableWriter::get_row

    fn InMemoryTableWriter::get_row(self : InMemoryTableWriter, table_name : String, id : Int64) -> Map[String, Json]?

    InMemoryTableWriter::get_row_by_key

    fn InMemoryTableWriter::get_row_by_key(self : InMemoryTableWriter, table_name : String, key : String, value : Int64) -> Map[String, Json]?

    InMemoryTableWriter::get_table_rows

    fn InMemoryTableWriter::get_table_rows(self : InMemoryTableWriter, table_name : String) -> Array[Map[String, Json]]

    InMemoryTableWriter::new

    PersistMode

    pub enum PersistMode {
    Archive
    Sync
    } derive(Eq, Show)

    持久化模式

    PersistMode::from_str

    fn PersistMode::from_str(s : String) -> PersistMode?

    PersistPostInterceptor

    pub(all) struct PersistPostInterceptor {
    meta_provider : InMemoryMetaProvider
    table_writer : &DynamicTableWriter
    }

    PersistPostInterceptor::as_interceptor

    装配为引擎拦截器(order=100,后置)

    PersistPostInterceptor::make

    TableMeta

    pub(all) struct TableMeta {
    table_name : String
    display_name : String
    fields : Array[FieldMeta]
    }

    TableMeta::add_field

    fn TableMeta::add_field(self : TableMeta, field : FieldMeta) -> Unit

    TableMeta::get_field

    fn TableMeta::get_field(self : TableMeta, column_name : String) -> FieldMeta?

    TableMeta::make

    fn TableMeta::make(table_name : String, display_name : String) -> TableMeta

    fill_system_fields

    fn fill_system_fields(data : Map[String, Json], operator : String, is_insert : Bool) -> Unit

    系统字段填充(时间走 Clock 注入口,D-M0-3)

    is_table_name_safe

    fn is_table_name_safe(name : String) -> Bool

    动态表名安全检查:仅字母数字下划线 + 保留前缀拒绝