From c4d636ee4d3a8fd730a3419cb702ee26b12d55de Mon Sep 17 00:00:00 2001 From: KD Date: Sun, 9 Mar 2025 00:54:02 +0000 Subject: [PATCH] Lang change --- .gitignore | 1 + .gitlab-ci.yml | 29 +++++++++++++++++++++++++++++ Cargo.toml | 8 ++++++++ go.mod | 3 --- models/loginresult.go | 9 --------- models/user.go | 17 ----------------- src/access_level.rs | 26 ++++++++++++++++++++++++++ src/lib.rs | 18 ++++++++++++++++++ src/login_result.rs | 31 +++++++++++++++++++++++++++++++ src/user.rs | 42 ++++++++++++++++++++++++++++++++++++++++++ 10 files changed, 155 insertions(+), 29 deletions(-) create mode 100644 .gitignore create mode 100644 .gitlab-ci.yml create mode 100644 Cargo.toml delete mode 100644 go.mod delete mode 100644 models/loginresult.go delete mode 100644 models/user.go create mode 100644 src/access_level.rs create mode 100644 src/lib.rs create mode 100644 src/login_result.rs create mode 100644 src/user.rs diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..ed092e7 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,29 @@ +stages: + - build + - test + +build: + stage: build + image: rust:1.85 + script: + - cargo build --release + artifacts: + paths: + - target/release/icarus-models + expire_in: 1 week + cache: + key: "cargo-cache" + paths: + - target/ + - ~/.cargo/ + +test: + stage: test + image: rust:1.85 + script: + - cargo test + cache: + key: "cargo-cache" + paths: + - target/ + - ~/.cargo/ diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..6cd79f2 --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,8 @@ +[package] +name = "icarus-models" +version = "0.1.0" +edition = "2024" + +[dependencies] +serde = { version = "1.0.218", features = ["derive"] } +serde_json = "1.0.139" diff --git a/go.mod b/go.mod deleted file mode 100644 index 48b211d..0000000 --- a/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module gitlab.com/kdeng00/icarus-models - -go 1.24 diff --git a/models/loginresult.go b/models/loginresult.go deleted file mode 100644 index f876cdc..0000000 --- a/models/loginresult.go +++ /dev/null @@ -1,9 +0,0 @@ -package models - -type LoginResult struct { - Id int `json:"id"` - Username string `json:"username"` - Token string `json:"token"` - TokenType string `json:"token_type"` - Expiration int `json:"expiration"` -} diff --git a/models/user.go b/models/user.go deleted file mode 100644 index f87895b..0000000 --- a/models/user.go +++ /dev/null @@ -1,17 +0,0 @@ -package models - -import "time" - -type User struct { - Id int `json:"id"` - Username string `json:"username"` - Password string `json:"password"` - Email string `json:"email"` - Phone string `json:"phone"` - Firstname string `json:"firstname"` - Lastname string `json:"lastname"` - EmailVerified bool `json:"email_verified"` - DateCreated time.Time `json:"date_created"` - Status string `json:"status"` - LastLogin time.Time `json:"last_login"` -} diff --git a/src/access_level.rs b/src/access_level.rs new file mode 100644 index 0000000..1499810 --- /dev/null +++ b/src/access_level.rs @@ -0,0 +1,26 @@ +use std::default::Default; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct AccessLevel { + pub id: i32, + pub level: String, + pub song_id: i32, +} + +impl Default for AccessLevel { + fn default() -> Self { + AccessLevel { + id: -1, + level: String::new(), + song_id: -1, + } + } +} + +impl AccessLevel { + pub fn _to_json(&self) -> Result { + return serde_json::to_string_pretty(&self); + } +} diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..0a704dc --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,18 @@ +pub mod access_level; +pub mod login_result; +pub mod user; + +pub fn add(left: u64, right: u64) -> u64 { + left + right +} + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn it_works() { + let result = add(2, 2); + assert_eq!(result, 4); + } +} diff --git a/src/login_result.rs b/src/login_result.rs new file mode 100644 index 0000000..9095fdb --- /dev/null +++ b/src/login_result.rs @@ -0,0 +1,31 @@ +use std::default::Default; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct LoginResult { + pub id: i32, + pub username: String, + pub token: String, + #[serde(alias = "token_type")] + pub token_type: String, + pub expiration: i32, +} + +impl Default for LoginResult { + fn default() -> Self { + LoginResult { + id: -1, + username: String::new(), + token: String::new(), + token_type: String::new(), + expiration: -1, + } + } +} + +impl LoginResult { + pub fn _to_json(&self) -> Result { + return serde_json::to_string_pretty(&self); + } +} diff --git a/src/user.rs b/src/user.rs new file mode 100644 index 0000000..4d5c25b --- /dev/null +++ b/src/user.rs @@ -0,0 +1,42 @@ +use std::default::Default; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Deserialize, Serialize)] +pub struct User { + pub id: i32, + pub username: String, + pub password: String, + pub email: String, + pub phone: String, + pub firstname: String, + pub lastname: String, + pub email_verified: bool, + pub date_created: String, + pub status: String, + pub last_login: String, +} + +impl Default for User { + fn default() -> Self { + User { + id: -1, + username: String::new(), + password: String::new(), + email: String::new(), + phone: String::new(), + firstname: String::new(), + lastname: String::new(), + email_verified: false, + date_created: String::new(), + status: String::new(), + last_login: String::new(), + } + } +} + +impl User { + pub fn _to_json(&self) -> Result { + return serde_json::to_string_pretty(&self); + } +}