mirror of
https://github.com/postgresml/pgcat.git
synced 2026-03-23 17:36:28 +00:00
* Fixed all clippy warnings. * Added `clippy` to CI. * Reverted an unwanted change + Applied `cargo fmt`. * Fixed the idiom version. * Revert "Fixed the idiom version." This reverts commit6f78be0d42. * Fixed clippy issues on CI. * Revert "Fixed clippy issues on CI." This reverts commita9fa6ba189. * Revert "Reverted an unwanted change + Applied `cargo fmt`." This reverts commit6bd37b6479. * Revert "Fixed all clippy warnings." This reverts commitd1f3b847e3. * Removed Clippy * Removed Lint * `admin.rs` clippy fixes. * Applied more clippy changes. * Even more clippy changes. * `client.rs` clippy fixes. * `server.rs` clippy fixes. * Revert "Removed Lint" This reverts commitcb5042b144. * Revert "Removed Clippy" This reverts commit6dec8bffb1. * Applied lint. * Revert "Revert "Fixed clippy issues on CI."" This reverts commit49164a733c.
46 lines
1.1 KiB
Rust
46 lines
1.1 KiB
Rust
//! The plugin ecosystem.
|
|
//!
|
|
//! Currently plugins only grant access or deny access to the database for a particual query.
|
|
//! Example use cases:
|
|
//! - block known bad queries
|
|
//! - block access to system catalogs
|
|
//! - block dangerous modifications like `DROP TABLE`
|
|
//! - etc
|
|
//!
|
|
|
|
pub mod intercept;
|
|
pub mod prewarmer;
|
|
pub mod query_logger;
|
|
pub mod table_access;
|
|
|
|
use crate::{errors::Error, query_router::QueryRouter};
|
|
use async_trait::async_trait;
|
|
use bytes::BytesMut;
|
|
use sqlparser::ast::Statement;
|
|
|
|
pub use intercept::Intercept;
|
|
pub use query_logger::QueryLogger;
|
|
pub use table_access::TableAccess;
|
|
|
|
#[derive(Clone, Debug, PartialEq)]
|
|
pub enum PluginOutput {
|
|
Allow,
|
|
Deny(String),
|
|
Overwrite(Vec<Statement>),
|
|
Intercept(BytesMut),
|
|
}
|
|
|
|
#[async_trait]
|
|
pub trait Plugin {
|
|
// Run before the query is sent to the server.
|
|
#[allow(clippy::ptr_arg)]
|
|
async fn run(
|
|
&mut self,
|
|
query_router: &QueryRouter,
|
|
ast: &Vec<Statement>,
|
|
) -> Result<PluginOutput, Error>;
|
|
|
|
// TODO: run after the result is returned
|
|
// async fn callback(&mut self, query_router: &QueryRouter);
|
|
}
|