Skip to main content

PluginAPIInterface

Trait PluginAPIInterface 

Source
pub trait PluginAPIInterface: Send + Sync {
    // Required methods
    fn register_schema_extension(
        &self,
        entity_type: EntityType,
        schema_changes: Vec<SchemaChange>,
    ) -> Result<(), String>;
    fn register_model_extension(
        &self,
        entity_type: EntityType,
        model_fields: Vec<ModelField>,
    ) -> Result<(), String>;
    fn register_query_filters(
        &self,
        entity_type: EntityType,
        query_filters: Vec<QueryFilter>,
    ) -> Result<(), String>;
    fn call_db_method(
        &self,
        method: &str,
        params: Value,
    ) -> Result<Value, String>;
}
Expand description

Abstract interface for plugins to interact with Core

Required Methods§

Source

fn register_schema_extension( &self, entity_type: EntityType, schema_changes: Vec<SchemaChange>, ) -> Result<(), String>

Register a database schema extension

Source

fn register_model_extension( &self, entity_type: EntityType, model_fields: Vec<ModelField>, ) -> Result<(), String>

Register a model extension

Source

fn register_query_filters( &self, entity_type: EntityType, query_filters: Vec<QueryFilter>, ) -> Result<(), String>

Register query filters

Source

fn call_db_method(&self, method: &str, params: Value) -> Result<Value, String>

Call a database method by name with JSON parameters This allows plugins to access database functionality without direct Database dependency Method names match Database methods (e.g., “create_project”, “get_projects”) Parameters are passed as a JSON object, return value is JSON

Implementors§