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