Skip to main content

flyer_orm/databases/mysql/
mod.rs

1
2
3use anyhow::Result;
4use sqlx::{FromRow, MySql, MySqlPool, Pool};
5
6use crate::{Executor, databases::mysql::query::MySQLQueryResult, query::{Pagination, Statement}};
7
8mod builder;
9pub mod query;
10
11pub struct MySQL {
12    db: Pool<MySql>,
13}
14
15impl MySQL {
16    pub async fn connect(url: &str) -> Result<Self> {
17        return Ok(Self {
18            db: MySqlPool::connect(url).await.unwrap()
19        });
20    }
21}
22
23impl Executor for MySQL {
24    type T = MySql;
25
26    async fn new(url: &str) -> Self where Self: Sized {
27        todo!()
28    }
29
30    fn db<'q>(&'q self) -> &'q Pool<Self::T> {
31        todo!()
32    }
33
34    fn to_sql<'q>(&self, statement: &'q Statement<'q, Self::T>) -> Result<String> {
35        todo!()
36    }
37
38    #[allow(refining_impl_trait)]
39    async fn execute<'q>(&self, sql: &'q str) -> Result<MySQLQueryResult> {
40        todo!();
41    }
42    
43    async fn insert<'q>(&self, statement: &'q Statement<'q, Self::T>) -> Result<()> {
44        todo!()
45    }
46    
47    async fn insert_as<'q, O>(&self, statement: &'q Statement<'q, Self::T>) -> Result<O>
48    where
49        O: for<'r> sqlx::FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized
50    {
51        todo!()
52    }
53    
54    async fn update<'q>(&self, statement: &'q Statement<'q, Self::T>) -> Result<()> {
55        todo!()
56    }
57    
58    async fn count<'q>(&self, statement: &'q Statement<'q, Self::T>) -> Result<u64> {
59        return Ok(0);
60    }
61    
62    async fn delete<'q>(&self, statement: &'q Statement<'q, Self::T>) -> Result<()> {
63        todo!()
64    }
65
66    async fn query_all<'q, O, T: 'q + sqlx::Encode<'q, Self::T> + sqlx::Type<Self::T>>(&self, sql: &str, args: Vec<T>) -> Result<Vec<O>>
67    where
68        O: for<'r> FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized {
69        todo!()
70    }
71
72    async fn query_one<'q, O, T: 'q + sqlx::Encode<'q, Self::T> + sqlx::Type<Self::T>>(&self, sql: &str, args: Vec<T>) -> Result<O>
73    where
74        O: for<'r> FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized {
75        todo!()
76    }
77
78    async fn all<'q, O>(&self, statement: &'q Statement<'q, Self::T>) -> Result<Vec<O>>
79    where
80        O: for<'r> FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized {
81        todo!()
82    }
83
84    async fn first<'q, O>(&self, statement: &'q Statement<'q, Self::T>) -> Result<O>
85    where
86        O: for<'r> FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized {
87        todo!()
88    }
89
90    async fn paginate<'q, O>(&self, statement: &'q Statement<'q, Self::T>) -> Result<Pagination<O>>
91    where
92        O: for<'r> FromRow<'r, <Self::T as sqlx::Database>::Row> + Send + Unpin + Sized {
93        todo!()
94    }
95}