1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
use async_trait::async_trait; use c3p0_common::json::codec::JsonCodec; use c3p0_common::json::model::IdType; use c3p0_common::{C3p0Error, ForUpdate, Model, NewModel}; #[async_trait(?Send)] pub trait C3p0JsonAsync<DATA, CODEC>: Clone where DATA: Clone + serde::ser::Serialize + serde::de::DeserializeOwned, CODEC: JsonCodec<DATA>, { type CONN; fn codec(&self) -> &CODEC; async fn create_table_if_not_exists(&self, conn: &mut Self::CONN) -> Result<(), C3p0Error>; async fn drop_table_if_exists( &self, conn: &mut Self::CONN, cascade: bool, ) -> Result<(), C3p0Error>; async fn count_all(&self, conn: &mut Self::CONN) -> Result<u64, C3p0Error>; async fn exists_by_id<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, ) -> Result<bool, C3p0Error>; async fn fetch_all(&self, conn: &mut Self::CONN) -> Result<Vec<Model<DATA>>, C3p0Error>; async fn fetch_all_for_update( &self, conn: &mut Self::CONN, for_update: &ForUpdate, ) -> Result<Vec<Model<DATA>>, C3p0Error>; async fn fetch_one_optional_by_id<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, ) -> Result<Option<Model<DATA>>, C3p0Error>; async fn fetch_one_optional_by_id_for_update<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, for_update: &ForUpdate, ) -> Result<Option<Model<DATA>>, C3p0Error>; async fn fetch_one_by_id<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, ) -> Result<Model<DATA>, C3p0Error>; async fn fetch_one_by_id_for_update<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, for_update: &ForUpdate, ) -> Result<Model<DATA>, C3p0Error>; async fn delete( &self, conn: &mut Self::CONN, obj: Model<DATA>, ) -> Result<Model<DATA>, C3p0Error>; async fn delete_all(&self, conn: &mut Self::CONN) -> Result<u64, C3p0Error>; async fn delete_by_id<'a, ID: Into<&'a IdType>>( &'a self, conn: &mut Self::CONN, id: ID, ) -> Result<u64, C3p0Error>; async fn save( &self, conn: &mut Self::CONN, obj: NewModel<DATA>, ) -> Result<Model<DATA>, C3p0Error>; async fn update( &self, conn: &mut Self::CONN, obj: Model<DATA>, ) -> Result<Model<DATA>, C3p0Error>; }