Skip to content
This repository has been archived by the owner on Sep 12, 2023. It is now read-only.

Commit

Permalink
types(share): make identifier relationship types for employee schedule
Browse files Browse the repository at this point in the history
  • Loading branch information
KennethTrecy committed Sep 13, 2022
1 parent c8b0955 commit f871ab2
Showing 1 changed file with 40 additions and 8 deletions.
48 changes: 40 additions & 8 deletions shareable/types/documents/employee_schedule.ts
Original file line number Diff line number Diff line change
@@ -1,16 +1,21 @@
import type { Day } from "$/types/database"
import type { Serializable } from "$/types/general"
import type { UserIdentifierDocument } from "$/types/documents/user"
import type { UserIdentifierDocument, DeserializedUserDocument } from "$/types/documents/user"
import type {
Completeness,
Format,

Resource,
Relationships,
Attributes,
ResourceIdentifier,
DeserializedResource,

DeriveRelationships,
DeriveRelationshipNames,
GeneralRelationshipData,
DeriveDeserializedRelationships,
PartialOrPickDeserializedRelationship,

ResourceDocument,
ResourceListDocument,
DeserializedResourceDocument,
Expand All @@ -31,7 +36,22 @@ export interface EmployeeScheduleAttributes<T extends Format = "serialized"> ext
dayName: Day
}

export type EmployeeScheduleRelationships = Relationships<{ "user": UserIdentifierDocument }>
interface EmployeeScheduleRelationshipData<unusedT extends Completeness = "read">
extends GeneralRelationshipData {
user: {
serialized: UserIdentifierDocument,
deserialized: DeserializedUserDocument
}
}

export type EmployeeScheduleRelationshipNames
= DeriveRelationshipNames<EmployeeScheduleRelationshipData>

export type EmployeeScheduleRelationships<T extends Completeness = "read">
= DeriveRelationships<EmployeeScheduleRelationshipData<T>>

export type DeserializedEmployeeScheduleRelationships<T extends Completeness = "read">
= DeriveDeserializedRelationships<EmployeeScheduleRelationshipData<T>>

export type EmployeeScheduleResource<T extends Completeness = "read", > = Resource<
T,
Expand All @@ -41,9 +61,17 @@ export type EmployeeScheduleResource<T extends Completeness = "read", > = Resour
T extends "create" ? EmployeeScheduleRelationships : Serializable
)

export type DeserializedEmployeeScheduleResource = DeserializedResource<
export type DeserializedEmployeeScheduleResource<
T extends EmployeeScheduleRelationshipNames|undefined = undefined
> = DeserializedResource<
EmployeeScheduleResourceIdentifier<"read">,
EmployeeScheduleAttributes<"deserialized">
> & PartialOrPickDeserializedRelationship<
EmployeeScheduleRelationshipData<"read">,
DeserializedEmployeeScheduleRelationships<"read">,
EmployeeScheduleRelationshipNames,
T extends EmployeeScheduleRelationshipNames ? true : false,
T extends EmployeeScheduleRelationshipNames ? T : EmployeeScheduleRelationshipNames
>

export type EmployeeScheduleDocument<T extends Completeness = "read"> = ResourceDocument<
Expand All @@ -60,16 +88,20 @@ export type EmployeeScheduleListDocument<T extends Completeness = "read"> = Reso
EmployeeScheduleResource<T>
>

export type DeserializedEmployeeScheduleDocument = DeserializedResourceDocument<
export type DeserializedEmployeeScheduleDocument<
T extends EmployeeScheduleRelationshipNames|undefined = undefined
> = DeserializedResourceDocument<
EmployeeScheduleResourceIdentifier<"read">,
EmployeeScheduleAttributes<"deserialized">,
DeserializedEmployeeScheduleResource
DeserializedEmployeeScheduleResource<T>
>

export type DeserializedEmployeeScheduleListDocument = DeserializedResourceListDocument<
export type DeserializedEmployeeScheduleListDocument<
T extends EmployeeScheduleRelationshipNames|undefined = undefined
> = DeserializedResourceListDocument<
EmployeeScheduleResourceIdentifier<"read">,
EmployeeScheduleAttributes<"deserialized">,
DeserializedEmployeeScheduleResource
DeserializedEmployeeScheduleResource<T>
>

export type EmployeeScheduleIdentifierDocument
Expand Down

0 comments on commit f871ab2

Please sign in to comment.