Added all dao & sql methods for unit and agent

This commit is contained in:
Franklin 2023-03-19 10:18:11 -04:00
parent cfa25d2bf7
commit 719281492b
15 changed files with 196 additions and 13 deletions

View File

@ -4,13 +4,11 @@ CREATE TABLE IF NOT EXISTS "unit" (
price_usd FLOAT8 NOT NULL,
unit_type VARCHAR NOT NULL,
rooms SMALLINT NOT NULL,
bathrooms SMALLINT NOT NULL,
area FLOAT4 NOT NULL,
description TEXT NOT NULL,
media TEXT NOT NULL,
admin_tag VARCHAR,
time_created TIMESTAMPTZ NOT NULL,
last_updated TIMESTAMPTZ NOT NULL
);

View File

@ -3,6 +3,7 @@ full_name = $1,
credential = $2,
credential_type = $3,
last_updated = $4
WHERE id = $5
RETURNING
id,
full_name,

1
sql/project/delete.sql Normal file
View File

@ -0,0 +1 @@
DELETE FROM project WHERE id = $1;

View File

@ -0,0 +1,14 @@
SELECT
id,
project_type as "project_type: _",
project_condition as "project_condition: _",
agent_id,
location_id,
title,
description,
admin_tag,
floors,
media as "media: _",
time_created,
last_updated
FROM project WHERE id = ANY($1);

View File

View File

@ -0,0 +1,14 @@
SELECT
id,
project_type as "project_type: _",
project_condition as "project_condition: _",
agent_id,
location_id,
title,
description,
admin_tag,
floors,
media as "media: _",
time_created,
last_updated
FROM project WHERE id = $1;

View File

@ -0,0 +1,28 @@
INSERT INTO project (
id,
project_type,
project_condition,
agent_id,
location_id,
title,
description,
admin_tag,
floors,
media,
time_created,
last_updated
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $11
) RETURNING
id,
project_type as "project_type: _",
project_condition as "project_condition: _",
agent_id,
location_id,
title,
description,
admin_tag,
floors,
media as "media: _",
time_created,
last_updated;

11
sql/project/update.sql Normal file
View File

@ -0,0 +1,11 @@
UPDATE project SET
project_type = $1,
project_condition = $2,
agent_id = $3,
location_id = $4,
title = $5,
description = $6,
admin_tag = $7,
floors = $8,
media = $9,
last_updated = $10,

1
sql/unit/delete.sql Normal file
View File

@ -0,0 +1 @@
DELETE FROM unit WHERE id = $1;

View File

@ -0,0 +1,15 @@
SELECT
id,
project_id,
price_usd,
unit_type as "unit_type: _",
rooms,
bathrooms,
area,
description,
media as "media: _",
admin_tag,
time_created,
last_updated
FROM unit
WHERE project_id = $1;

View File

@ -0,0 +1,40 @@
INSERT INTO unit (
id,
project_id,
price_usd,
unit_type,
rooms,
bathrooms,
area,
description,
media,
admin_tag,
time_created,
last_updated
) VALUES (
$1,
$2,
$3,
$4,
$5,
$6,
$7,
$8,
$9,
$10,
$11,
$11
)
RETURNING
id,
project_id,
price_usd,
unit_type as "unit_type: _",
rooms,
bathrooms,
area,
description,
media as "media: _",
admin_tag,
time_created,
last_updated;

24
sql/unit/update.sql Normal file
View File

@ -0,0 +1,24 @@
UPDATE unit SET
price_usd = $1,
unit_type = $2,
rooms = $3,
bathrooms = $4,
area = $5,
description = $6,
media = $7,
admin_tag = $8,
last_updated = $9
WHERE id = $10
RETURNING
id,
project_id,
price_usd,
unit_type as "unit_type: _",
rooms,
bathrooms,
area,
description,
media as "media: _",
admin_tag,
time_created,
last_updated;

View File

@ -16,7 +16,7 @@ pub async fn get_agents_with_ids(conn: &PgPool, agent_ids: &Vec<Uuid>) -> Result
}
pub async fn update_agent(tx: &mut Transaction<'_, Postgres>, agent: Agent) -> Result<Agent, sqlx::Error> {
sqlx::query_file_as!(Agent, "sql/agent/update.sql", agent.full_name, agent.credential, agent.credential_type as _, agent.last_updated).fetch_one(tx).await
sqlx::query_file_as!(Agent, "sql/agent/update.sql", agent.full_name, agent.credential, agent.credential_type as _, agent.last_updated, agent.id).fetch_one(tx).await
}
pub async fn delete_agent(tx: &mut Transaction<'_, Postgres>, agent_id: &Uuid) -> Result<PgQueryResult, sqlx::Error> {

View File

@ -0,0 +1,16 @@
use jl_types::domain::project::Project;
use sqlx::postgres::PgQueryResult;
pub async fn insert() -> Result<Project, sqlx::Error> {
todo!()
}
pub async fn delete() -> Result<PgQueryResult, sqlx::Error> {
todo!()
}
pub async fn update() -> Result<Project, sqlx::Error> {
todo!()
}

View File

@ -0,0 +1,20 @@
use jl_types::domain::unit::Unit;
use sqlx::{PgPool, Transaction, Postgres, postgres::PgQueryResult};
use uuid::Uuid;
pub async fn fetch_with_project_id(conn: &PgPool, project_id: &Uuid) -> Result<Vec<Unit>, sqlx::Error> {
sqlx::query_file_as!(Unit, "sql/unit/fetch_with_project_id.sql", project_id).fetch_all(conn).await
}
pub async fn delete(tx: &mut Transaction<'_, Postgres>, unit_id: &Uuid) -> Result<PgQueryResult, sqlx::Error> {
sqlx::query_file!("sql/unit/delete.sql", unit_id).execute(tx).await
}
pub async fn insert(tx: &mut Transaction<'_, Postgres>, unit: &Unit) -> Result<Unit, sqlx::Error> {
sqlx::query_file_as!(Unit, "sql/unit/insert.sql", unit.id, unit.project_id, unit.price_usd, unit.unit_type as _, unit.rooms, unit.bathrooms, unit.area, unit.description, unit.media as _, unit.admin_tag, unit.time_created).fetch_one(tx).await
}
pub async fn update(conn: &PgPool, unit: &Unit) -> Result<Unit, sqlx::Error> {
sqlx::query_file_as!(Unit, "sql/unit/update.sql", unit.price_usd, unit.unit_type as _, unit.rooms, unit.bathrooms, unit.area, unit.description, unit.media as _, unit.admin_tag, unit.last_updated, unit.id).fetch_one(conn).await
}