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§
Sourcefn register_schema_extension(
&self,
entity_type: EntityType,
schema_changes: Vec<SchemaChange>,
) -> Result<(), String>
fn register_schema_extension( &self, entity_type: EntityType, schema_changes: Vec<SchemaChange>, ) -> Result<(), String>
Register a database schema extension
Sourcefn register_model_extension(
&self,
entity_type: EntityType,
model_fields: Vec<ModelField>,
) -> Result<(), String>
fn register_model_extension( &self, entity_type: EntityType, model_fields: Vec<ModelField>, ) -> Result<(), String>
Register a model extension
Sourcefn register_query_filters(
&self,
entity_type: EntityType,
query_filters: Vec<QueryFilter>,
) -> Result<(), String>
fn register_query_filters( &self, entity_type: EntityType, query_filters: Vec<QueryFilter>, ) -> Result<(), String>
Register query filters
Sourcefn call_db_method(&self, method: &str, params: Value) -> Result<Value, String>
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