-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'meeting-api' into develop
- Loading branch information
Showing
2 changed files
with
92 additions
and
0 deletions.
There are no files selected for viewing
59 changes: 59 additions & 0 deletions
59
resources/js/data-access/memo-api/groups/FacilityMeeting.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
import {useQueryClient} from "@tanstack/solid-query"; | ||
import {activeFacilityId} from "state/activeFacilityId.state"; | ||
import {V1} from "../config"; | ||
import {SolidQueryOpts} from "../query_utils"; | ||
import {MeetingResource} from "../resources/meeting.resource"; | ||
import {Api} from "../types"; | ||
import {ListInParam, createGetFromList, createListRequest, parseGetListResponse} from "../utils"; | ||
|
||
/** | ||
* @see {@link https://test-memo.fdds.pl/api/documentation#/Facility%20meeting production docs} | ||
* @see {@link http://localhost:9081/api/documentation#/Facility%20meeting local docs} | ||
*/ | ||
export namespace FacilityMeeting { | ||
const getMeetingsListBase = (request: Api.Request.GetListParams, config?: Api.Config) => | ||
V1.get<Api.Response.GetList<MeetingResource>>(`/facility/${activeFacilityId()}/meeting/list`, { | ||
...config, | ||
params: request, | ||
}); | ||
const getMeetingsList = (request: Api.Request.GetListParams, config?: Api.Config) => | ||
getMeetingsListBase(request, config).then(parseGetListResponse); | ||
const getMeeting = createGetFromList(getMeetingsListBase); | ||
|
||
export const createMeeting = (meeting: Api.Request.Create<MeetingResource>, config?: Api.Config) => | ||
V1.post<Api.Response.Post>(`/facility/${activeFacilityId()}/meeting`, meeting, config); | ||
export const updateMeeting = (meeting: Api.Request.Patch<MeetingResource>, config?: Api.Config) => | ||
V1.patch(`/facility/${activeFacilityId()}/meeting/${meeting.id}`, meeting, config); | ||
export const deleteMeeting = (meetingId: Api.Id, config?: Api.Config) => | ||
V1.delete(`/facility/${activeFacilityId()}/meeting/${meetingId}`, config); | ||
|
||
export const keys = { | ||
meeting: () => ["meeting"] as const, | ||
// The key contains the active facility id because the list depends on it. | ||
meetingList: (request: Api.Request.GetListParams) => | ||
[...keys.meeting(), "list", request, activeFacilityId()] as const, | ||
// The key does not contain the facility id because it already contains the meeting id, which is already unique. | ||
meetingGet: (id: Api.Id) => [...keys.meeting(), "list", createListRequest(id)] as const, | ||
}; | ||
|
||
export const meetingsQueryOptions = (ids: ListInParam) => { | ||
const request = createListRequest(ids); | ||
return { | ||
queryFn: ({signal}) => getMeetingsList(request, {signal}), | ||
queryKey: keys.meetingList(request), | ||
} satisfies SolidQueryOpts<MeetingResource[]>; | ||
}; | ||
|
||
export const meetingQueryOptions = (id: Api.Id) => | ||
({ | ||
queryFn: ({signal}) => getMeeting(id, {signal}), | ||
queryKey: keys.meetingGet(id), | ||
}) satisfies SolidQueryOpts<MeetingResource>; | ||
|
||
export function useInvalidator() { | ||
const queryClient = useQueryClient(); | ||
return { | ||
meetings: () => queryClient.invalidateQueries({queryKey: keys.meeting()}), | ||
}; | ||
} | ||
} |
33 changes: 33 additions & 0 deletions
33
resources/js/data-access/memo-api/resources/meeting.resource.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
/** | ||
* The meeting resource. | ||
* @see `/help/tables/meetings.md` | ||
* @see `/app/Http/Resources/MeetingResource.php` | ||
*/ | ||
export interface MeetingResource { | ||
id: string; | ||
facilityId: string; | ||
typeDictId: string; | ||
notes: string; | ||
date: string; | ||
startDayminute: number; | ||
durationMinutes: number; | ||
statusDictId: string; | ||
createdBy: string; | ||
isRemote: boolean; | ||
attendants: MeetingAttendantResource[]; | ||
resources: MeetingResourceResource[]; | ||
} | ||
|
||
export interface MeetingAttendantResource { | ||
id: string; | ||
meetingId: string; | ||
userId: string; | ||
attendanceType: string; | ||
attendanceStatusDictId: string; | ||
} | ||
|
||
export interface MeetingResourceResource { | ||
id: string; | ||
meetingId: string; | ||
resourceDictId: string; | ||
} |