@htlkg/data 0.0.15 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +72 -0
- package/dist/client/index.d.ts +123 -30
- package/dist/client/index.js +75 -1
- package/dist/client/index.js.map +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +4 -3
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.js +326 -4
- package/dist/index.js.map +1 -1
- package/dist/mutations/index.d.ts +148 -5
- package/dist/mutations/index.js +245 -0
- package/dist/mutations/index.js.map +1 -1
- package/dist/queries/index.d.ts +54 -2
- package/dist/queries/index.js +60 -1
- package/dist/queries/index.js.map +1 -1
- package/dist/server/index.d.ts +47 -0
- package/dist/server/index.js +59 -0
- package/dist/server/index.js.map +1 -0
- package/package.json +6 -2
- package/src/client/index.ts +82 -3
- package/src/client/proxy.ts +170 -0
- package/src/index.ts +11 -0
- package/src/mutations/accounts.ts +102 -1
- package/src/mutations/brands.ts +102 -1
- package/src/mutations/index.ts +13 -0
- package/src/mutations/systemSettings.ts +130 -0
- package/src/mutations/users.ts +102 -1
- package/src/queries/index.ts +9 -0
- package/src/queries/systemSettings.ts +115 -0
package/src/queries/index.ts
CHANGED
|
@@ -43,3 +43,12 @@ export {
|
|
|
43
43
|
|
|
44
44
|
// Server-side query helpers
|
|
45
45
|
export { executeServerQuery, executePublicQuery } from "./server-helpers";
|
|
46
|
+
|
|
47
|
+
// SystemSettings queries
|
|
48
|
+
export {
|
|
49
|
+
getSystemSettings,
|
|
50
|
+
getSoftDeleteRetentionDays,
|
|
51
|
+
checkRestoreEligibility,
|
|
52
|
+
SYSTEM_SETTINGS_KEY,
|
|
53
|
+
DEFAULT_SOFT_DELETE_RETENTION_DAYS,
|
|
54
|
+
} from "./systemSettings";
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SystemSettings Query Functions
|
|
3
|
+
*
|
|
4
|
+
* Provides query functions for fetching system settings from the GraphQL API.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import type { SystemSettings } from "@htlkg/core/types";
|
|
8
|
+
|
|
9
|
+
/** Default retention days if no settings exist */
|
|
10
|
+
export const DEFAULT_SOFT_DELETE_RETENTION_DAYS = 30;
|
|
11
|
+
|
|
12
|
+
/** The key used for global system settings */
|
|
13
|
+
export const SYSTEM_SETTINGS_KEY = "GLOBAL";
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Get system settings
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { getSystemSettings } from '@htlkg/data/queries';
|
|
21
|
+
* import { generateClient } from '@htlkg/data/client';
|
|
22
|
+
*
|
|
23
|
+
* const client = generateClient<Schema>();
|
|
24
|
+
* const settings = await getSystemSettings(client);
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export async function getSystemSettings<TClient = any>(
|
|
28
|
+
client: TClient,
|
|
29
|
+
): Promise<SystemSettings | null> {
|
|
30
|
+
try {
|
|
31
|
+
const { data, errors } = await (client as any).models.SystemSettings.get({
|
|
32
|
+
key: SYSTEM_SETTINGS_KEY,
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
if (errors) {
|
|
36
|
+
console.error("[getSystemSettings] GraphQL errors:", errors);
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return data as SystemSettings;
|
|
41
|
+
} catch (error) {
|
|
42
|
+
console.error("[getSystemSettings] Error fetching system settings:", error);
|
|
43
|
+
throw error;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Get the soft delete retention days from system settings
|
|
49
|
+
* Returns the default (30 days) if settings don't exist
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* import { getSoftDeleteRetentionDays } from '@htlkg/data/queries';
|
|
54
|
+
* import { generateClient } from '@htlkg/data/client';
|
|
55
|
+
*
|
|
56
|
+
* const client = generateClient<Schema>();
|
|
57
|
+
* const days = await getSoftDeleteRetentionDays(client);
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export async function getSoftDeleteRetentionDays<TClient = any>(
|
|
61
|
+
client: TClient,
|
|
62
|
+
): Promise<number> {
|
|
63
|
+
const settings = await getSystemSettings(client);
|
|
64
|
+
return settings?.softDeleteRetentionDays ?? DEFAULT_SOFT_DELETE_RETENTION_DAYS;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Check if a soft-deleted item can still be restored based on retention period
|
|
69
|
+
*
|
|
70
|
+
* @param deletedAt - The ISO date string when the item was deleted
|
|
71
|
+
* @param retentionDays - Number of days items can be restored
|
|
72
|
+
* @returns Object with canRestore flag and daysRemaining/daysExpired
|
|
73
|
+
*/
|
|
74
|
+
export function checkRestoreEligibility(
|
|
75
|
+
deletedAt: string | undefined | null,
|
|
76
|
+
retentionDays: number,
|
|
77
|
+
): {
|
|
78
|
+
canRestore: boolean;
|
|
79
|
+
daysRemaining: number;
|
|
80
|
+
daysExpired: number;
|
|
81
|
+
expiresAt: Date | null;
|
|
82
|
+
} {
|
|
83
|
+
if (!deletedAt) {
|
|
84
|
+
return {
|
|
85
|
+
canRestore: false,
|
|
86
|
+
daysRemaining: 0,
|
|
87
|
+
daysExpired: 0,
|
|
88
|
+
expiresAt: null,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const deletedDate = new Date(deletedAt);
|
|
93
|
+
const expiresAt = new Date(deletedDate);
|
|
94
|
+
expiresAt.setDate(expiresAt.getDate() + retentionDays);
|
|
95
|
+
|
|
96
|
+
const now = new Date();
|
|
97
|
+
const msRemaining = expiresAt.getTime() - now.getTime();
|
|
98
|
+
const daysRemaining = Math.ceil(msRemaining / (1000 * 60 * 60 * 24));
|
|
99
|
+
|
|
100
|
+
if (daysRemaining <= 0) {
|
|
101
|
+
return {
|
|
102
|
+
canRestore: false,
|
|
103
|
+
daysRemaining: 0,
|
|
104
|
+
daysExpired: Math.abs(daysRemaining),
|
|
105
|
+
expiresAt,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
return {
|
|
110
|
+
canRestore: true,
|
|
111
|
+
daysRemaining,
|
|
112
|
+
daysExpired: 0,
|
|
113
|
+
expiresAt,
|
|
114
|
+
};
|
|
115
|
+
}
|