Skip to main content

flyer_orm/databases/mysql/
mod.rs

1mod 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}