Commit 2e57c936 authored by Chunchi Che's avatar Chunchi Che

Merge branch 'database' into 'main'

Database

See merge request mycard/neos-rs!1
parents 686bcec7 79431d64
Pipeline #18038 failed with stages
in 5 minutes and 22 seconds
[submodule "ygopro-database"]
path = ygopro-database
url = git@git.mycard.moe:mycard/ygopro-database.git
......@@ -13,3 +13,4 @@ log = "0.4"
pretty_env_logger = "0.4"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1"
diesel = { version = "2.0.0", features = ["sqlite"] }
use diesel::{Connection, SqliteConnection};
pub enum DbConn {
// Currently only sqlite Connection
SqliteConn(SqliteConnection),
}
impl DbConn {
pub fn establish_sqlite(database_url: &str) -> anyhow::Result<Self> {
Ok(Self::SqliteConn(SqliteConnection::establish(database_url)?))
}
}
#[cfg(test)]
mod tests {
use super::DbConn;
#[test]
fn test_establish_sqlite() {
let workspace = env!("CARGO_MANIFEST_DIR");
let db_url = format!("{}/ygopro-database/locales/zh-CN/cards.db", workspace);
let _conn = DbConn::establish_sqlite(&db_url).unwrap();
}
}
use std::{net::SocketAddr, str::FromStr};
use warp::Filter;
mod deck;
mod infra;
mod service;
const ADDR: &str = "127.0.0.1:3030";
// TODO: Configurable
const DECK_ADDR: &str = "127.0.0.1:3030";
const CARDS_ADDR: &str = "127.0.0.1:3033";
#[tokio::main]
async fn main() -> anyhow::Result<()> {
pretty_env_logger::try_init()?;
// todo: use CORS correctly
// TODO: use CORS correctly
let cors = warp::cors()
.allow_any_origin()
.allow_credentials(true)
.allow_header("content-type")
.allow_method("GET");
let deck = warp::path!("deck" / String).map(deck_service).with(cors);
warp::serve(deck).run(SocketAddr::from_str(ADDR)?).await;
let deck = warp::path!("deck" / String)
.map(service::deck_service)
.with(cors.clone());
warp::serve(deck)
.run(SocketAddr::from_str(DECK_ADDR)?)
.await;
// TODO: cards服务暂时仅支持单卡查询
let cards = warp::path!("cards" / String)
.map(service::cards_service)
.with(cors);
warp::serve(cards)
.run(SocketAddr::from_str(CARDS_ADDR)?)
.await;
Ok(())
}
fn deck_service(param: String) -> String {
let deck = deck::Deck::from_path(format!("deck/{}", param)).unwrap_or_default();
serde_json::to_string(&deck).unwrap_or_default()
}
pub fn service(param: String) -> String {
todo!()
}
......@@ -53,3 +53,8 @@ impl Deck {
Ok(deck)
}
}
pub fn service(param: String) -> String {
let deck = Deck::from_path(format!("deck/{}", param)).unwrap_or_default();
serde_json::to_string(&deck).unwrap_or_default()
}
mod cards;
mod deck;
pub use cards::service as cards_service;
pub use deck::service as deck_service;
Subproject commit efda900bab0b70a0c1cb7b2de48533f40058529b
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment