flyer_orm/databases/mysql/
mod.rs1
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}