FPSMS-frontend
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 line
1.5 KiB

  1. import { serverFetchJson } from "@/app/utils/fetchUtil";
  2. import { BASE_API_URL } from "@/config/api";
  3. import { cache } from "react";
  4. import "server-only";
  5. export interface UserResult {
  6. action: any;
  7. id: number;
  8. username: string;
  9. // name: string;
  10. }
  11. // export interface DetailedUser extends UserResult {
  12. // username: string;
  13. // password: string
  14. // }
  15. export interface UserDetail {
  16. data: UserResult;
  17. authIds: number[];
  18. groupIds: number[];
  19. auths: any[];
  20. }
  21. export type passwordRule = {
  22. min: number;
  23. max: number;
  24. number: boolean;
  25. upperEng: boolean;
  26. lowerEng: boolean;
  27. specialChar: boolean;
  28. };
  29. export interface EscalationCombo {
  30. id: number;
  31. value: number;
  32. label: string;
  33. name: string;
  34. title: string;
  35. department: string;
  36. }
  37. export const preloadUser = () => {
  38. fetchUser();
  39. };
  40. export const preloadUserDetail = (id: number) => {
  41. fetchUserDetail(id);
  42. };
  43. export const fetchUser = cache(async () => {
  44. return serverFetchJson<UserResult[]>(`${BASE_API_URL}/user`, {
  45. next: { tags: ["user"] },
  46. });
  47. });
  48. export const fetchUserDetail = cache(async (id: number) => {
  49. return serverFetchJson<UserResult[]>(`${BASE_API_URL}/user/${id}`, {
  50. next: { tags: ["user"] },
  51. });
  52. });
  53. export const fetchPwRules = cache(async () => {
  54. return serverFetchJson<passwordRule>(`${BASE_API_URL}/user/password-rule`, {
  55. next: { tags: ["pwRule"] },
  56. });
  57. });
  58. export const fetchEscalationCombo = cache(async () => {
  59. return serverFetchJson<EscalationCombo[]>(`${BASE_API_URL}/user/escalation-combo`, {
  60. next: { tags: ["escalationCombo"]}
  61. })
  62. })