refactor: ♻️ keeping apis simple

This commit is contained in:
Ahmet Kaan GÜMÜŞ 2024-11-20 00:16:31 +03:00
parent fecd38fda2
commit 0acbb835f7
5 changed files with 33 additions and 10 deletions

View file

@ -4,3 +4,6 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
reqwest = { version = "0.12.9", features = ["multipart"] }
sha3 = "0.10.8"
tokio = { version = "1.41.1", features = ["full"] }

View file

@ -1,3 +1,4 @@
fn main() { #[tokio::main]
async fn main() {
println!("Hello, world!"); println!("Hello, world!");
} }

View file

@ -80,6 +80,16 @@ pub struct Version {
third: u8, third: u8,
} }
impl Version {
pub fn new(first: u8, second: u8, third: u8) -> Self {
Version {
first,
second,
third,
}
}
}
impl Display for Version { impl Display for Version {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "{}.{}.{}", self.first, self.second, self.third) write!(f, "{}.{}.{}", self.first, self.second, self.third)
@ -90,3 +100,9 @@ impl Display for Version {
pub struct Publisher { pub struct Publisher {
name: String, name: String,
} }
impl Publisher {
pub fn new(name: String) -> Self {
Publisher { name }
}
}

View file

@ -6,10 +6,17 @@ use tokio_util::io::ReaderStream;
use crate::{database, routing, PACKAGE_PATH}; use crate::{database, routing, PACKAGE_PATH};
use super::package::Package; use super::package::{Package, Publisher, Version};
pub async fn create_package(package: routing::Package) -> Option<Package> { pub async fn create_package(package: routing::Package) -> Option<Package> {
let package = Package::new(package.name, package.publisher, package.version); let publisher = Publisher::new(package.publisher);
let version = package
.version
.split('.')
.filter_map(|splitted| splitted.parse::<u8>().ok())
.collect::<Vec<u8>>();
let version = Version::new(*version.get(0)?, *version.get(1)?, *version.get(2)?);
let package = Package::new(package.name, publisher, version);
database::create_package(package).await database::create_package(package).await
} }

View file

@ -9,17 +9,13 @@ use axum::{
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use tower_http::cors::CorsLayer; use tower_http::cors::CorsLayer;
use crate::{ use crate::{database, AppState};
database,
package::package::{Publisher, Version},
AppState,
};
#[derive(Debug, Serialize, Deserialize)] #[derive(Debug, Serialize, Deserialize)]
pub struct Package { pub struct Package {
pub name: String, pub name: String,
pub publisher: Publisher, pub publisher: String,
pub version: Version, pub version: String,
} }
pub async fn route(State(app_state): State<AppState>) -> Router { pub async fn route(State(app_state): State<AppState>) -> Router {