From a57845f08a6eb9bc32c2173f15472e0c29722cf6 Mon Sep 17 00:00:00 2001 From: ivarlovlie Date: Mon, 10 Oct 2022 00:33:20 +0800 Subject: refactor: Restructure and create new models --- .../lib/models/internal/CreateAccountPayload.ts | 4 +++ code/app/src/lib/models/internal/ErrorResult.ts | 4 +++ .../lib/models/internal/IInternalFetchRequest.ts | 6 +++++ .../lib/models/internal/IInternalFetchResponse.ts | 6 +++++ code/app/src/lib/models/internal/ISession.ts | 8 ++++++ .../src/lib/models/internal/IValidationResult.ts | 31 ++++++++++++++++++++++ code/app/src/lib/models/internal/LoginPayload.ts | 5 ++++ .../lib/models/internal/UnwrappedEntryDateTime.ts | 9 +++++++ .../lib/models/internal/UpdateProfilePayload.ts | 4 +++ 9 files changed, 77 insertions(+) create mode 100644 code/app/src/lib/models/internal/CreateAccountPayload.ts create mode 100644 code/app/src/lib/models/internal/ErrorResult.ts create mode 100644 code/app/src/lib/models/internal/IInternalFetchRequest.ts create mode 100644 code/app/src/lib/models/internal/IInternalFetchResponse.ts create mode 100644 code/app/src/lib/models/internal/ISession.ts create mode 100644 code/app/src/lib/models/internal/IValidationResult.ts create mode 100644 code/app/src/lib/models/internal/LoginPayload.ts create mode 100644 code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts create mode 100644 code/app/src/lib/models/internal/UpdateProfilePayload.ts (limited to 'code/app/src/lib/models/internal') diff --git a/code/app/src/lib/models/internal/CreateAccountPayload.ts b/code/app/src/lib/models/internal/CreateAccountPayload.ts new file mode 100644 index 0000000..d116308 --- /dev/null +++ b/code/app/src/lib/models/internal/CreateAccountPayload.ts @@ -0,0 +1,4 @@ +export interface CreateAccountPayload { + username: string, + password: string +} diff --git a/code/app/src/lib/models/internal/ErrorResult.ts b/code/app/src/lib/models/internal/ErrorResult.ts new file mode 100644 index 0000000..7c70017 --- /dev/null +++ b/code/app/src/lib/models/internal/ErrorResult.ts @@ -0,0 +1,4 @@ +export interface ErrorResult { + title: string, + text: string +} diff --git a/code/app/src/lib/models/internal/IInternalFetchRequest.ts b/code/app/src/lib/models/internal/IInternalFetchRequest.ts new file mode 100644 index 0000000..68505e2 --- /dev/null +++ b/code/app/src/lib/models/internal/IInternalFetchRequest.ts @@ -0,0 +1,6 @@ +export interface IInternalFetchRequest { + url: string, + init?: RequestInit, + timeout?: number + retry_count?: number +} diff --git a/code/app/src/lib/models/internal/IInternalFetchResponse.ts b/code/app/src/lib/models/internal/IInternalFetchResponse.ts new file mode 100644 index 0000000..6c91b35 --- /dev/null +++ b/code/app/src/lib/models/internal/IInternalFetchResponse.ts @@ -0,0 +1,6 @@ +export interface IInternalFetchResponse { + ok: boolean, + status: number, + data: any, + http_response: Response +} diff --git a/code/app/src/lib/models/internal/ISession.ts b/code/app/src/lib/models/internal/ISession.ts new file mode 100644 index 0000000..7587145 --- /dev/null +++ b/code/app/src/lib/models/internal/ISession.ts @@ -0,0 +1,8 @@ +export interface ISession { + profile: { + username: string, + displayName: string, + id: string, + }, + lastChecked: number, +} \ No newline at end of file diff --git a/code/app/src/lib/models/internal/IValidationResult.ts b/code/app/src/lib/models/internal/IValidationResult.ts new file mode 100644 index 0000000..9a21b13 --- /dev/null +++ b/code/app/src/lib/models/internal/IValidationResult.ts @@ -0,0 +1,31 @@ +export interface IValidationResult { + errors: Array, + has_errors: Function, + add_error: Function, + remove_error: Function, +} + +export interface IValidationError { + _id?: string, + title: string, + text?: string +} + +export default class ValidationResult implements IValidationResult { + errors: IValidationError[] + has_errors(): boolean { + return this.errors?.length > 0; + } + add_error(prop: string, error: IValidationError): void { + if (!this.errors) this.errors = []; + error._id = prop; + this.errors.push(error); + } + remove_error(property: string): void { + const new_errors = []; + for (const error of this.errors) { + if (error._id != property) new_errors.push(error) + } + this.errors = new_errors; + } +} diff --git a/code/app/src/lib/models/internal/LoginPayload.ts b/code/app/src/lib/models/internal/LoginPayload.ts new file mode 100644 index 0000000..beb96cf --- /dev/null +++ b/code/app/src/lib/models/internal/LoginPayload.ts @@ -0,0 +1,5 @@ +export interface LoginPayload { + username: string, + password: string, + persist: boolean +} diff --git a/code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts b/code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts new file mode 100644 index 0000000..da71bc9 --- /dev/null +++ b/code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts @@ -0,0 +1,9 @@ +import type { Temporal } from "temporal-polyfill"; + +export interface UnwrappedEntryDateTime { + start_date: Temporal.PlainDate, + stop_date: Temporal.PlainDate, + start_time: Temporal.PlainTime, + stop_time: Temporal.PlainTime, + duration: Temporal.Duration, +} diff --git a/code/app/src/lib/models/internal/UpdateProfilePayload.ts b/code/app/src/lib/models/internal/UpdateProfilePayload.ts new file mode 100644 index 0000000..d2983ff --- /dev/null +++ b/code/app/src/lib/models/internal/UpdateProfilePayload.ts @@ -0,0 +1,4 @@ +export interface UpdateProfilePayload { + username?: string, + password?: string, +} -- cgit v1.3