pub struct PostgresAdapter { /* private fields */ }Expand description
PostgreSQL database adapter.
All connection pools — including the default — live in a single concurrent cache keyed by database name. No external mutex required.
Implementations§
Source§impl PostgresAdapter
impl PostgresAdapter
Sourcepub async fn new(config: &DatabaseConfig) -> Result<Self, AppError>
pub async fn new(config: &DatabaseConfig) -> Result<Self, AppError>
Creates a new PostgreSQL adapter from configuration.
Stores a clone of the configuration for constructing connection options for non-default databases at runtime. The initial pool is placed into the shared cache keyed by the configured database name.
§Errors
Returns AppError::Connection if the connection fails.
Source§impl PostgresAdapter
impl PostgresAdapter
Sourcepub fn build_tool_router(&self) -> ToolRouter<Self>
pub fn build_tool_router(&self) -> ToolRouter<Self>
Builds the tool router, excluding write tools in read-only mode.
Source§impl PostgresAdapter
impl PostgresAdapter
Sourcepub fn tool_list_databases_tool_attr() -> Tool
pub fn tool_list_databases_tool_attr() -> Tool
Generated tool metadata function for list_databases
Sourcepub fn tool_list_databases(
&self,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_list_databases( &self, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
List all accessible databases on the connected database server. Call this first to discover available database names.
Sourcepub fn tool_list_tables_tool_attr() -> Tool
pub fn tool_list_tables_tool_attr() -> Tool
Generated tool metadata function for list_tables
Sourcepub fn tool_list_tables(
&self,
Parameters: Parameters<ListTablesRequest>,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_list_tables( &self, Parameters: Parameters<ListTablesRequest>, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
List all tables in a specific database.
Requires database_name from list_databases.
Sourcepub fn tool_get_table_schema_tool_attr() -> Tool
pub fn tool_get_table_schema_tool_attr() -> Tool
Generated tool metadata function for get_table_schema
Sourcepub fn tool_get_table_schema(
&self,
Parameters: Parameters<GetTableSchemaRequest>,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_get_table_schema( &self, Parameters: Parameters<GetTableSchemaRequest>, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
Get column definitions (type, nullable, key, default) and foreign key
relationships for a table. Requires database_name and table_name.
Sourcepub fn tool_read_query_tool_attr() -> Tool
pub fn tool_read_query_tool_attr() -> Tool
Generated tool metadata function for read_query
Sourcepub fn tool_read_query(
&self,
Parameters: Parameters<QueryRequest>,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_read_query( &self, Parameters: Parameters<QueryRequest>, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
Execute a read-only SQL query (SELECT, SHOW, DESCRIBE, USE, EXPLAIN).
Sourcepub fn tool_write_query_tool_attr() -> Tool
pub fn tool_write_query_tool_attr() -> Tool
Generated tool metadata function for write_query
Sourcepub fn tool_write_query(
&self,
Parameters: Parameters<QueryRequest>,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_write_query( &self, Parameters: Parameters<QueryRequest>, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
Execute a write SQL query (INSERT, UPDATE, DELETE, CREATE, ALTER, DROP).
Sourcepub fn tool_create_database_tool_attr() -> Tool
pub fn tool_create_database_tool_attr() -> Tool
Generated tool metadata function for create_database
Sourcepub fn tool_create_database(
&self,
Parameters: Parameters<CreateDatabaseRequest>,
) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
pub fn tool_create_database( &self, Parameters: Parameters<CreateDatabaseRequest>, ) -> Pin<Box<dyn Future<Output = Result<CallToolResult, ErrorData>> + Send + '_>>
Create a new database. Not supported for SQLite.
Trait Implementations§
Source§impl Clone for PostgresAdapter
impl Clone for PostgresAdapter
Source§fn clone(&self) -> PostgresAdapter
fn clone(&self) -> PostgresAdapter
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for PostgresAdapter
impl Debug for PostgresAdapter
Source§impl ServerHandler for PostgresAdapter
impl ServerHandler for PostgresAdapter
fn get_info(&self) -> ServerInfo
async fn call_tool( &self, request: CallToolRequestParams, context: RequestContext<RoleServer>, ) -> Result<CallToolResult, ErrorData>
async fn list_tools( &self, _request: Option<PaginatedRequestParams>, _context: RequestContext<RoleServer>, ) -> Result<ListToolsResult, ErrorData>
fn enqueue_task( &self, _request: CallToolRequestParams, _context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CreateTaskResult, ErrorData>> + MaybeSendFuture
fn ping( &self, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn initialize( &self, request: InitializeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<InitializeResult, ErrorData>> + MaybeSendFuture
fn complete( &self, request: CompleteRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CompleteResult, ErrorData>> + MaybeSendFuture
fn set_level( &self, request: SetLevelRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn get_prompt( &self, request: GetPromptRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetPromptResult, ErrorData>> + MaybeSendFuture
fn list_prompts( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListPromptsResult, ErrorData>> + MaybeSendFuture
fn list_resources( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListResourcesResult, ErrorData>> + MaybeSendFuture
fn list_resource_templates( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListResourceTemplatesResult, ErrorData>> + MaybeSendFuture
fn read_resource( &self, request: ReadResourceRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ReadResourceResult, ErrorData>> + MaybeSendFuture
fn subscribe( &self, request: SubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn unsubscribe( &self, request: UnsubscribeRequestParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<(), ErrorData>> + MaybeSendFuture
fn on_custom_request( &self, request: CustomRequest, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CustomResult, ErrorData>> + MaybeSendFuture
fn on_cancelled( &self, notification: CancelledNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_progress( &self, notification: ProgressNotificationParam, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_initialized( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_roots_list_changed( &self, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn on_custom_notification( &self, notification: CustomNotification, context: NotificationContext<RoleServer>, ) -> impl Future<Output = ()> + MaybeSendFuture
fn list_tasks( &self, request: Option<PaginatedRequestParams>, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<ListTasksResult, ErrorData>> + MaybeSendFuture
fn get_task_info( &self, request: GetTaskInfoParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskResult, ErrorData>> + MaybeSendFuture
fn get_task_result( &self, request: GetTaskResultParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<GetTaskPayloadResult, ErrorData>> + MaybeSendFuture
fn cancel_task( &self, request: CancelTaskParams, context: RequestContext<RoleServer>, ) -> impl Future<Output = Result<CancelTaskResult, ErrorData>> + MaybeSendFuture
Auto Trait Implementations§
impl Freeze for PostgresAdapter
impl !RefUnwindSafe for PostgresAdapter
impl Send for PostgresAdapter
impl Sync for PostgresAdapter
impl Unpin for PostgresAdapter
impl UnsafeUnpin for PostgresAdapter
impl !UnwindSafe for PostgresAdapter
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
impl<R, S> DynService<R> for Swhere
R: ServiceRole,
S: Service<R>,
fn handle_request( &self, request: <R as ServiceRole>::PeerReq, context: RequestContext<R>, ) -> Pin<Box<dyn Future<Output = Result<<R as ServiceRole>::Resp, ErrorData>> + Send + '_>>
fn handle_notification( &self, notification: <R as ServiceRole>::PeerNot, context: NotificationContext<R>, ) -> Pin<Box<dyn Future<Output = Result<(), ErrorData>> + Send + '_>>
fn get_info(&self) -> <R as ServiceRole>::Info
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more