Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions src/application/dtos/requests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
use chrono::NaiveDateTime;
use serde_json::Value;

pub struct CreateDoseRecordRequest {
pub medication_id: String,
pub scheduled_at: NaiveDateTime,
}

impl CreateDoseRecordRequest {
pub fn new(medication_id: impl Into<String>, scheduled_at: NaiveDateTime) -> Self {
Self {
medication_id: medication_id.into(),
scheduled_at,
}
}
}

pub struct CreateMedicationRequest {
pub name: String,
pub amount_mg: u32,
pub scheduled_time: Vec<(u32, u32)>,
pub dose_frequency: String,
}

impl CreateMedicationRequest {
pub fn new(
name: impl Into<String>,
amount_mg: u32,
scheduled_time: Vec<(u32, u32)>,
dose_frequency: impl Into<String>,
) -> Self {
Self {
name: name.into(),
amount_mg,
scheduled_time,
dose_frequency: dose_frequency.into(),
}
}
}

pub struct DeleteMedicationRequest {
pub id: String,
}

pub struct EditMedicationRequest {
pub id: String,
pub name: String,
pub amount_mg: u32,
pub scheduled_time: Vec<(u32, u32)>,
pub dose_frequency: String,
}

impl EditMedicationRequest {
pub fn new(
id: impl Into<String>,
name: impl Into<String>,
amount_mg: u32,
scheduled_time: Vec<(u32, u32)>,
dose_frequency: impl Into<String>,
) -> Self {
Self {
id: id.into(),
name: name.into(),
amount_mg,
scheduled_time,
dose_frequency: dose_frequency.into(),
}
}
}

pub struct GetMedicationRequest {
pub id: String,
}

pub struct ListAllMedicationsRequest;

pub struct ListDoseRecordsRequest {
pub medication_id: String,
}

pub struct MarkDoseTakenRequest {
pub record_id: String,
pub taken_at: NaiveDateTime,
}

impl MarkDoseTakenRequest {
pub fn new(record_id: impl Into<String>, taken_at: NaiveDateTime) -> Self {
Self {
record_id: record_id.into(),
taken_at,
}
}
}

pub struct ScheduleDoseRequest;

pub struct SettingsRequest {
pub op: SettingsOperation,
}

pub enum SettingsOperation {
Get,
Update { settings: Value },
}

pub struct UpdateMedicationRequest {
pub id: String,
pub name: String,
pub amount_mg: u32,
pub scheduled_time: Vec<(u32, u32)>,
pub dose_frequency: String,
}

impl UpdateMedicationRequest {
pub fn new(
id: impl Into<String>,
name: impl Into<String>,
amount_mg: u32,
scheduled_time: Vec<(u32, u32)>,
dose_frequency: impl Into<String>,
) -> Self {
Self {
id: id.into(),
name: name.into(),
amount_mg,
scheduled_time,
dose_frequency: dose_frequency.into(),
}
}
}
15 changes: 0 additions & 15 deletions src/application/dtos/requests/create_dose_record_request.rs

This file was deleted.

22 changes: 0 additions & 22 deletions src/application/dtos/requests/create_medication_request.rs

This file was deleted.

3 changes: 0 additions & 3 deletions src/application/dtos/requests/delete_medication_request.rs

This file was deleted.

25 changes: 0 additions & 25 deletions src/application/dtos/requests/edit_medication_request.rs

This file was deleted.

3 changes: 0 additions & 3 deletions src/application/dtos/requests/get_medication_request.rs

This file was deleted.

This file was deleted.

3 changes: 0 additions & 3 deletions src/application/dtos/requests/list_dose_records_request.rs

This file was deleted.

18 changes: 0 additions & 18 deletions src/application/dtos/requests/mark_dose_taken_request.rs

This file was deleted.

23 changes: 0 additions & 23 deletions src/application/dtos/requests/mod.rs

This file was deleted.

5 changes: 0 additions & 5 deletions src/application/dtos/requests/schedule_dose_request.rs

This file was deleted.

12 changes: 0 additions & 12 deletions src/application/dtos/requests/settings_request.rs

This file was deleted.

25 changes: 0 additions & 25 deletions src/application/dtos/requests/update_medication_request.rs

This file was deleted.

101 changes: 101 additions & 0 deletions src/application/dtos/responses.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
use chrono::NaiveDateTime;
use serde_json::Value;

#[derive(Clone)]
pub struct DoseRecordDto {
pub id: String,
pub medication_id: String,
pub scheduled_at: NaiveDateTime,
pub taken_at: Option<NaiveDateTime>,
}

#[derive(Clone)]
pub struct ScheduledDoseRecordDto {
pub id: String,
pub medication_id: String,
pub scheduled_at: NaiveDateTime,
}

pub struct MedicationDto {
pub id: String,
pub name: String,
pub amount_mg: u32,
pub scheduled_time: Vec<(u32, u32)>,
pub dose_frequency: String,
}

pub struct CreateDoseRecordResponse {
pub id: String,
}

pub struct CreateMedicationResponse {
pub id: String,
}

pub struct DeleteMedicationResponse {}

pub struct EditMedicationResponse {
pub id: String,
}

pub struct GetMedicationResponse {
pub medication: MedicationDto,
}

pub struct GetSettingsResponse {
pub navigation_mode: String,
}

pub struct ListAllMedicationsResponse {
pub medications: Vec<MedicationDto>,
}

pub struct ListDoseRecordsResponse {
pub records: Vec<DoseRecordDto>,
}

pub struct MarkDoseTakenResponse {
pub record_id: String,
}

impl MarkDoseTakenResponse {
pub fn new(record_id: impl Into<String>) -> Self {
Self {
record_id: record_id.into(),
}
}
}

pub struct MarkMedicationTakenResponse {
pub id: String,
}

impl MarkMedicationTakenResponse {
pub fn new(id: impl Into<String>) -> Self {
Self { id: id.into() }
}
}

pub struct ScheduleDoseResponse {
pub created: Vec<ScheduledDoseRecordDto>,
}

pub struct SettingsResponse {
pub settings: Value,
}

pub struct UpdateMedicationResponse {
pub id: String,
}

#[cfg(test)]
mod test {
use super::*;

#[test]
fn response_new_and_fields() {
let raw_id = "some-id";
let response = MarkDoseTakenResponse::new("some-id");
assert_eq!(response.record_id, raw_id);
}
}
Loading