Fix docker (#3)
Rust Build / Test Suite (push) Successful in 1m20s
Rust Build / Check (push) Successful in 1m31s
Rust Build / Rustfmt (push) Successful in 33s
Rust Build / Clippy (push) Successful in 1m27s
Rust Build / build (push) Successful in 1m38s
Rust Build / Check (pull_request) Successful in 1m16s
Rust Build / Test Suite (pull_request) Successful in 1m34s
Rust Build / Rustfmt (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Successful in 1m53s
Rust Build / build (pull_request) Successful in 1m47s
Rust Build / Test Suite (push) Successful in 1m20s
Rust Build / Check (push) Successful in 1m31s
Rust Build / Rustfmt (push) Successful in 33s
Rust Build / Clippy (push) Successful in 1m27s
Rust Build / build (push) Successful in 1m38s
Rust Build / Check (pull_request) Successful in 1m16s
Rust Build / Test Suite (pull_request) Successful in 1m34s
Rust Build / Rustfmt (pull_request) Successful in 36s
Rust Build / Clippy (pull_request) Successful in 1m53s
Rust Build / build (pull_request) Successful in 1m47s
Reviewed-on: phoenix/textsender-auth#3
This commit was merged in pull request #3.
This commit is contained in:
@@ -5,5 +5,6 @@ DB_PASSWORD=password
|
|||||||
DB_HOST=auth_db
|
DB_HOST=auth_db
|
||||||
DB_PORT=5432
|
DB_PORT=5432
|
||||||
DB_SSLMODE=disable
|
DB_SSLMODE=disable
|
||||||
|
DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:5432/${DB_NAME}
|
||||||
ENABLE_REGISTRATION=true
|
ENABLE_REGISTRATION=true
|
||||||
ALLOWED_ORIGINS="http://textsender.com"
|
ALLOWED_ORIGINS="http://textsender.com"
|
||||||
|
|||||||
@@ -5,5 +5,6 @@ DB_PASSWORD=password
|
|||||||
DB_HOST=localhost
|
DB_HOST=localhost
|
||||||
DB_PORT=5432
|
DB_PORT=5432
|
||||||
DB_SSLMODE=disable
|
DB_SSLMODE=disable
|
||||||
|
DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:5432/${DB_NAME}
|
||||||
ENABLE_REGISTRATION=true
|
ENABLE_REGISTRATION=true
|
||||||
ALLOWED_ORIGINS="http://textsender.com"
|
ALLOWED_ORIGINS="http://textsender.com"
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
SECRET_KEY=NULqYIzgt28bTiyziCd7IOO7b6LnWDW!
|
|
||||||
DB_NAME=textsender_auth_db
|
|
||||||
DB_USER=textsender_auth
|
|
||||||
DB_PASSWORD=yEDjWZCH2vdctjn!
|
|
||||||
DB_HOST=localhost
|
|
||||||
DB_PORT=5432
|
|
||||||
DB_SSLMODE=disable
|
|
||||||
ENABLE_REGISTRATION=true
|
|
||||||
ALLOWED_ORIGINS="http://textsender.com"
|
|
||||||
@@ -3,12 +3,10 @@ name: Rust Build
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- v0.2.0
|
- main
|
||||||
- v0.2.0
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- v0.2.0
|
- main
|
||||||
- v0.2.0
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
@@ -19,11 +17,12 @@ jobs:
|
|||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.95
|
toolchain: 1.95
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
- run: |
|
- run: |
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
||||||
chmod 600 ~/.ssh/textsender-models_deploy_key
|
chmod 600 ~/.ssh/textsender-models_deploy_key
|
||||||
ssh-keyscan ${{ secret.MYHOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan ${{ secrets.MY_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
||||||
@@ -54,6 +53,7 @@ jobs:
|
|||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.95
|
toolchain: 1.95
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
# --- Add this step for explicit verification ---
|
# --- Add this step for explicit verification ---
|
||||||
- name: Verify Docker Environment
|
- name: Verify Docker Environment
|
||||||
run: |
|
run: |
|
||||||
@@ -81,7 +81,7 @@ jobs:
|
|||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
||||||
chmod 600 ~/.ssh/textsender-models_deploy_key
|
chmod 600 ~/.ssh/textsender-models_deploy_key
|
||||||
ssh-keyscan ${{ secret.MYHOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan ${{ secrets.MY_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
||||||
@@ -96,12 +96,13 @@ jobs:
|
|||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.95
|
toolchain: 1.95
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
- run: rustup component add rustfmt
|
- run: rustup component add rustfmt
|
||||||
- run: |
|
- run: |
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
||||||
chmod 600 ~/.ssh/textsender-models_deploy_key
|
chmod 600 ~/.ssh/textsender-models_deploy_key
|
||||||
ssh-keyscan ${{ secret.MYHOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan ${{ secrets.MY_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
||||||
@@ -115,12 +116,13 @@ jobs:
|
|||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.95
|
toolchain: 1.95
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
- run: rustup component add clippy
|
- run: rustup component add clippy
|
||||||
- run: |
|
- run: |
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
||||||
chmod 600 ~/.ssh/textsender-models_deploy_key
|
chmod 600 ~/.ssh/textsender-models_deploy_key
|
||||||
ssh-keyscan ${{ secret.MYHOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan ${{ secrets.MY_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
||||||
@@ -134,11 +136,12 @@ jobs:
|
|||||||
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
- uses: actions-rust-lang/setup-rust-toolchain@v1
|
||||||
with:
|
with:
|
||||||
toolchain: 1.95
|
toolchain: 1.95
|
||||||
|
- uses: Swatinem/rust-cache@v2
|
||||||
- run: |
|
- run: |
|
||||||
mkdir -p ~/.ssh
|
mkdir -p ~/.ssh
|
||||||
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
echo "${{ secrets.MYREPO_TOKEN }}" > ~/.ssh/textsender-models_deploy_key
|
||||||
chmod 600 ~/.ssh/textsender-models_deploy_key
|
chmod 600 ~/.ssh/textsender-models_deploy_key
|
||||||
ssh-keyscan ${{ secret.MYHOST }} >> ~/.ssh/known_hosts
|
ssh-keyscan ${{ secrets.MY_HOST }} >> ~/.ssh/known_hosts
|
||||||
|
|
||||||
eval $(ssh-agent -s)
|
eval $(ssh-agent -s)
|
||||||
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
ssh-add -v ~/.ssh/textsender-models_deploy_key
|
||||||
|
|||||||
Generated
+1
-2
@@ -2241,12 +2241,11 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "textsender_models"
|
name = "textsender_models"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
source = "git+ssh://git@git.kundeng.us/phoenix/textsender-models.git?tag=v0.3.0-19-cf112a468d-111#cf112a468d4e653ec49c55bc890d59b730c85f79"
|
source = "git+ssh://git@git.kundeng.us/phoenix/textsender-models.git?tag=v0.3.0#d504108745b7b97a02eac24e16763cdb5e731f2b"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"const_format",
|
"const_format",
|
||||||
"dotenvy",
|
"dotenvy",
|
||||||
"josekit",
|
"josekit",
|
||||||
"rand 0.10.1",
|
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"time",
|
"time",
|
||||||
|
|||||||
+1
-1
@@ -21,7 +21,7 @@ time = { version = "0.3.47", features = ["macros", "serde"] }
|
|||||||
josekit = { version = "0.10.3" }
|
josekit = { version = "0.10.3" }
|
||||||
utoipa = { version = "5.5.0", features = ["axum_extras"] }
|
utoipa = { version = "5.5.0", features = ["axum_extras"] }
|
||||||
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
utoipa-swagger-ui = { version = "9.0.2", features = ["axum"] }
|
||||||
textsender_models = { git = "ssh://git@git.kundeng.us/phoenix/textsender-models.git", tag = "v0.3.0-19-cf112a468d-111" }
|
textsender_models = { git = "ssh://git@git.kundeng.us/phoenix/textsender-models.git", tag = "v0.3.0" }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
http-body-util = { version = "0.1.3" }
|
http-body-util = { version = "0.1.3" }
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ COPY --from=builder /usr/src/app/.env .
|
|||||||
COPY --from=builder /usr/src/app/migrations ./migrations
|
COPY --from=builder /usr/src/app/migrations ./migrations
|
||||||
|
|
||||||
# Expose the port your Axum app listens on (e.g., 3000 or 8000)
|
# Expose the port your Axum app listens on (e.g., 3000 or 8000)
|
||||||
EXPOSE 8001
|
EXPOSE 9080
|
||||||
|
|
||||||
# Set the command to run your application
|
# Set the command to run your application
|
||||||
# Ensure this matches the binary name copied above
|
# Ensure this matches the binary name copied above
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
-- Add migration script here
|
||||||
|
CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||||
|
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "user" (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
firstname TEXT NOT NULL,
|
||||||
|
lastname TEXT NOT NULL,
|
||||||
|
phone_number TEXT NOT NULL,
|
||||||
|
username TEXT NOT NULL,
|
||||||
|
password TEXT NOT NULL,
|
||||||
|
created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
last_login TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
salt_id UUID NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "salt" (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
salt TEXT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS "service_user" (
|
||||||
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
|
username TEXT NOT NULL,
|
||||||
|
passphrase TEXT NOT NULL,
|
||||||
|
created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
last_login timestamptz NULL
|
||||||
|
);
|
||||||
+32
-29
@@ -1,29 +1,32 @@
|
|||||||
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
-- CREATE EXTENSION IF NOT EXISTS pgcrypto;
|
||||||
|
-- CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
||||||
DROP TABLE IF EXISTS users CASCADE;
|
--
|
||||||
DROP TABLE IF EXISTS service_users CASCADE;
|
-- DROP TABLE IF EXISTS "user" CASCADE;
|
||||||
|
-- DROP TABLE IF EXISTS "salt" CASCADE;
|
||||||
CREATE TABLE users (
|
-- DROP TABLE IF EXISTS "service_user" CASCADE;
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
--
|
||||||
first_name TEXT NULL,
|
-- CREATE TABLE IF NOT EXISTS "user" (
|
||||||
last_name TEXT NULL,
|
-- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
phone_number TEXT NOT NULL,
|
-- first_name TEXT NOT NULL,
|
||||||
username TEXT NOT NULL,
|
-- last_name TEXT NOT NULL,
|
||||||
password TEXT NOT NULL,
|
-- phone_number TEXT NOT NULL,
|
||||||
created timestamptz DEFAULT now(),
|
-- username TEXT NOT NULL,
|
||||||
last_login timestamptz NULL,
|
-- password TEXT NOT NULL,
|
||||||
salt_id UUID NOT NULL
|
-- created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
);
|
-- last_login TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
-- salt_id UUID NOT NULL
|
||||||
CREATE TABLE IF NOT EXISTS "salt" (
|
-- );
|
||||||
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
--
|
||||||
salt TEXT NOT NULL
|
--
|
||||||
);
|
-- CREATE TABLE IF NOT EXISTS "salt" (
|
||||||
|
-- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
CREATE TABLE service_users (
|
-- salt TEXT NOT NULL
|
||||||
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
-- );
|
||||||
username TEXT NOT NULL,
|
--
|
||||||
passphrase TEXT NOT NULL,
|
-- CREATE TABLE IF NOT EXISTS "service_user" (
|
||||||
created timestamptz DEFAULT now(),
|
-- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||||
last_login timestamptz NULL
|
-- username TEXT NOT NULL,
|
||||||
);
|
-- passphrase TEXT NOT NULL,
|
||||||
|
-- created TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||||
|
-- last_login timestamptz NULL
|
||||||
|
-- );
|
||||||
|
|||||||
+2
-2
@@ -3,6 +3,6 @@ pub mod register;
|
|||||||
|
|
||||||
pub mod endpoints {
|
pub mod endpoints {
|
||||||
pub const ROOT: &str = "/";
|
pub const ROOT: &str = "/";
|
||||||
pub const REGISTER: &str = "/api/v2/register";
|
pub const REGISTER: &str = "/api/v1/register";
|
||||||
pub const DBTEST: &str = "/api/v2/test/db";
|
pub const DBTEST: &str = "/api/v1/test/db";
|
||||||
}
|
}
|
||||||
|
|||||||
+17
-13
@@ -8,18 +8,15 @@ pub mod request {
|
|||||||
|
|
||||||
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
|
#[derive(Default, Deserialize, Serialize, utoipa::ToSchema)]
|
||||||
pub struct Request {
|
pub struct Request {
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
|
||||||
pub username: String,
|
pub username: String,
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
|
||||||
pub password: String,
|
pub password: String,
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
pub phone_number: String,
|
||||||
pub email: String,
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
pub email: Option<String>,
|
||||||
pub phone: String,
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
pub firstname: Option<String>,
|
||||||
pub firstname: String,
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
#[serde(skip_serializing_if = "String::is_empty")]
|
pub lastname: Option<String>,
|
||||||
pub lastname: String,
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -71,16 +68,19 @@ pub async fn register_user(
|
|||||||
username: payload.username.clone(),
|
username: payload.username.clone(),
|
||||||
password: payload.password.clone(),
|
password: payload.password.clone(),
|
||||||
// email: payload.email.clone(),
|
// email: payload.email.clone(),
|
||||||
phone_number: payload.phone.clone(),
|
phone_number: payload.phone_number.clone(),
|
||||||
firstname: payload.firstname.clone(),
|
|
||||||
lastname: payload.lastname.clone(),
|
|
||||||
// email_verified: true,
|
// email_verified: true,
|
||||||
..Default::default()
|
..Default::default()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
user.firstname = payload.firstname.unwrap_or_default();
|
||||||
|
user.lastname = payload.lastname.unwrap_or_default();
|
||||||
|
|
||||||
|
println!("Checking if user exists");
|
||||||
match repo::user::exists(&pool, &user.username).await {
|
match repo::user::exists(&pool, &user.username).await {
|
||||||
Ok(res) => {
|
Ok(res) => {
|
||||||
if res {
|
if res {
|
||||||
|
println!("Already exists");
|
||||||
(
|
(
|
||||||
StatusCode::BAD_REQUEST,
|
StatusCode::BAD_REQUEST,
|
||||||
Json(response::Response {
|
Json(response::Response {
|
||||||
@@ -89,16 +89,20 @@ pub async fn register_user(
|
|||||||
}),
|
}),
|
||||||
)
|
)
|
||||||
} else {
|
} else {
|
||||||
|
println!("Good to create");
|
||||||
|
println!("Generate salt string");
|
||||||
let salt_string = hashing::generate_salt().unwrap();
|
let salt_string = hashing::generate_salt().unwrap();
|
||||||
let mut salt = textsender_models::user::Salt::default();
|
let mut salt = textsender_models::user::Salt::default();
|
||||||
let generated_salt = salt_string;
|
let generated_salt = salt_string;
|
||||||
salt.salt = generated_salt.to_string();
|
salt.salt = generated_salt.to_string();
|
||||||
|
println!("Creating salt");
|
||||||
salt.id = repo::salt::insert(&pool, &salt).await.unwrap();
|
salt.id = repo::salt::insert(&pool, &salt).await.unwrap();
|
||||||
user.salt_id = salt.id;
|
user.salt_id = salt.id;
|
||||||
let hashed_password =
|
let hashed_password =
|
||||||
hashing::hash_password(&user.password, &generated_salt).unwrap();
|
hashing::hash_password(&user.password, &generated_salt).unwrap();
|
||||||
user.password = hashed_password;
|
user.password = hashed_password;
|
||||||
|
|
||||||
|
println!("Creating user");
|
||||||
match repo::user::insert(&pool, &user).await {
|
match repo::user::insert(&pool, &user).await {
|
||||||
Ok((id, date_created)) => {
|
Ok((id, date_created)) => {
|
||||||
user.id = id;
|
user.id = id;
|
||||||
|
|||||||
+19
-6
@@ -15,7 +15,7 @@ pub mod user {
|
|||||||
) -> Result<textsender_models::user::User, sqlx::Error> {
|
) -> Result<textsender_models::user::User, sqlx::Error> {
|
||||||
let result = sqlx::query(
|
let result = sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
SELECT * FROM "user" WHERE username = $1
|
SELECT id, username, password, phone_number, salt_id, firstname, lastname, created, last_login FROM "user" WHERE username = $1
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(username)
|
.bind(username)
|
||||||
@@ -85,8 +85,21 @@ pub mod user {
|
|||||||
.await;
|
.await;
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Ok(r) => Ok(r.is_some()),
|
Ok(r) => match r {
|
||||||
Err(e) => Err(e),
|
Some(row) => {
|
||||||
|
if row.is_empty() {
|
||||||
|
Ok(false)
|
||||||
|
} else {
|
||||||
|
Ok(true)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => Ok(false),
|
||||||
|
},
|
||||||
|
Err(e) => {
|
||||||
|
eprintln!("What??");
|
||||||
|
eprintln!("Error: {e:?}");
|
||||||
|
Err(e)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,7 +109,7 @@ pub mod user {
|
|||||||
) -> Result<(uuid::Uuid, std::option::Option<time::OffsetDateTime>), sqlx::Error> {
|
) -> Result<(uuid::Uuid, std::option::Option<time::OffsetDateTime>), sqlx::Error> {
|
||||||
let row = sqlx::query(
|
let row = sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
INSERT INTO "user" (username, password, phone, firstname, lastname, salt_id)
|
INSERT INTO "user" (username, password, phone_number, firstname, lastname, salt_id)
|
||||||
VALUES ($1, $2, $3, $4, $5, $6)
|
VALUES ($1, $2, $3, $4, $5, $6)
|
||||||
RETURNING id, created;
|
RETURNING id, created;
|
||||||
"#,
|
"#,
|
||||||
@@ -117,7 +130,7 @@ pub mod user {
|
|||||||
let result = InsertedData {
|
let result = InsertedData {
|
||||||
id: row.try_get("id").map_err(|_e| sqlx::Error::RowNotFound)?,
|
id: row.try_get("id").map_err(|_e| sqlx::Error::RowNotFound)?,
|
||||||
date_created: row
|
date_created: row
|
||||||
.try_get("date_created")
|
.try_get("created")
|
||||||
.map_err(|_e| sqlx::Error::RowNotFound)?,
|
.map_err(|_e| sqlx::Error::RowNotFound)?,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -143,7 +156,7 @@ pub mod salt {
|
|||||||
) -> Result<textsender_models::user::Salt, sqlx::Error> {
|
) -> Result<textsender_models::user::Salt, sqlx::Error> {
|
||||||
let result = sqlx::query(
|
let result = sqlx::query(
|
||||||
r#"
|
r#"
|
||||||
SELECT * FROM "salt" WHERE id = $1
|
SELECT id, salt FROM "salt" WHERE id = $1
|
||||||
"#,
|
"#,
|
||||||
)
|
)
|
||||||
.bind(id)
|
.bind(id)
|
||||||
|
|||||||
Reference in New Issue
Block a user