aboutsummaryrefslogtreecommitdiffstats
path: root/code/app/src/lib/models/internal
diff options
context:
space:
mode:
authorivarlovlie <git@ivarlovlie.no>2022-10-09 18:33:20 +0200
committerivarlovlie <git@ivarlovlie.no>2022-10-09 18:33:20 +0200
commita57845f08a6eb9bc32c2173f15472e0c29722cf6 (patch)
tree68724e66a4caadf78c464a9cd93f62c8aaed7401 /code/app/src/lib/models/internal
parentb7e39b59fd0fc7b5610ebff29035bf622079e0d8 (diff)
downloadgreatoffice-a57845f08a6eb9bc32c2173f15472e0c29722cf6.tar.xz
greatoffice-a57845f08a6eb9bc32c2173f15472e0c29722cf6.zip
refactor: Restructure and create new models
Diffstat (limited to 'code/app/src/lib/models/internal')
-rw-r--r--code/app/src/lib/models/internal/CreateAccountPayload.ts4
-rw-r--r--code/app/src/lib/models/internal/ErrorResult.ts4
-rw-r--r--code/app/src/lib/models/internal/IInternalFetchRequest.ts6
-rw-r--r--code/app/src/lib/models/internal/IInternalFetchResponse.ts6
-rw-r--r--code/app/src/lib/models/internal/ISession.ts8
-rw-r--r--code/app/src/lib/models/internal/IValidationResult.ts31
-rw-r--r--code/app/src/lib/models/internal/LoginPayload.ts5
-rw-r--r--code/app/src/lib/models/internal/UnwrappedEntryDateTime.ts9
-rw-r--r--code/app/src/lib/models/internal/UpdateProfilePayload.ts4
9 files changed, 77 insertions, 0 deletions
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<IValidationError>,
+ 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,
+}