refactor: ♻️ keeping apis simple
This commit is contained in:
parent
fecd38fda2
commit
0acbb835f7
5 changed files with 33 additions and 10 deletions
|
@ -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"] }
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
fn main() {
|
#[tokio::main]
|
||||||
|
async fn main() {
|
||||||
println!("Hello, world!");
|
println!("Hello, world!");
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue