@sqrzro/addon-admins 4.0.0-alpha.10

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.
Files changed (121) hide show
  1. package/LICENSE +5 -0
  2. package/dist/DEPRECATED_addon/config.d.ts +10 -0
  3. package/dist/DEPRECATED_addon/config.d.ts.map +1 -0
  4. package/dist/DEPRECATED_addon/config.js +11 -0
  5. package/dist/DEPRECATED_addon/defaults.d.ts +6 -0
  6. package/dist/DEPRECATED_addon/defaults.d.ts.map +1 -0
  7. package/dist/DEPRECATED_addon/defaults.js +6 -0
  8. package/dist/DEPRECATED_addon/index.d.ts +6 -0
  9. package/dist/DEPRECATED_addon/index.d.ts.map +1 -0
  10. package/dist/DEPRECATED_addon/index.js +9 -0
  11. package/dist/DEPRECATED_addon/interfaces.d.ts +8 -0
  12. package/dist/DEPRECATED_addon/interfaces.d.ts.map +1 -0
  13. package/dist/DEPRECATED_addon/interfaces.js +1 -0
  14. package/dist/addon/config.d.ts +10 -0
  15. package/dist/addon/config.d.ts.map +1 -0
  16. package/dist/addon/config.js +11 -0
  17. package/dist/addon/defaults.d.ts +6 -0
  18. package/dist/addon/defaults.d.ts.map +1 -0
  19. package/dist/addon/defaults.js +6 -0
  20. package/dist/addon/index.d.ts +6 -0
  21. package/dist/addon/index.d.ts.map +1 -0
  22. package/dist/addon/index.js +9 -0
  23. package/dist/addon/interfaces.d.ts +8 -0
  24. package/dist/addon/interfaces.d.ts.map +1 -0
  25. package/dist/addon/interfaces.js +1 -0
  26. package/dist/addon.d.ts +4 -0
  27. package/dist/addon.d.ts.map +1 -0
  28. package/dist/addon.js +4 -0
  29. package/dist/components/AdminHomeActions/index.d.ts +7 -0
  30. package/dist/components/AdminHomeActions/index.d.ts.map +1 -0
  31. package/dist/components/AdminHomeActions/index.js +17 -0
  32. package/dist/components/AdminHomeActions/server.d.ts +8 -0
  33. package/dist/components/AdminHomeActions/server.d.ts.map +1 -0
  34. package/dist/components/AdminHomeActions/server.js +8 -0
  35. package/dist/components/AdminHomePage/index.d.ts +4 -0
  36. package/dist/components/AdminHomePage/index.d.ts.map +1 -0
  37. package/dist/components/AdminHomePage/index.js +11 -0
  38. package/dist/components/AdminListPage/index.d.ts +4 -0
  39. package/dist/components/AdminListPage/index.d.ts.map +1 -0
  40. package/dist/components/AdminListPage/index.js +9 -0
  41. package/dist/components/AdminPage/index.d.ts +3 -0
  42. package/dist/components/AdminPage/index.js +5 -0
  43. package/dist/components/Admins/index.d.ts +4 -0
  44. package/dist/components/Admins/index.d.ts.map +1 -0
  45. package/dist/components/Admins/index.js +16 -0
  46. package/dist/config/index.d.ts +7 -0
  47. package/dist/config/index.d.ts.map +1 -0
  48. package/dist/config/index.js +10 -0
  49. package/dist/config.d.ts +4 -0
  50. package/dist/config.d.ts.map +1 -0
  51. package/dist/config.js +10 -0
  52. package/dist/forms/AdminCreateForm/index.d.ts +3 -0
  53. package/dist/forms/AdminCreateForm/index.d.ts.map +1 -0
  54. package/dist/forms/AdminCreateForm/index.js +13 -0
  55. package/dist/forms/AdminCreateForm/interfaces.d.ts +5 -0
  56. package/dist/forms/AdminCreateForm/interfaces.d.ts.map +1 -0
  57. package/dist/forms/AdminCreateForm/interfaces.js +1 -0
  58. package/dist/forms/AdminCreateForm/server.d.ts +6 -0
  59. package/dist/forms/AdminCreateForm/server.d.ts.map +1 -0
  60. package/dist/forms/AdminCreateForm/server.js +22 -0
  61. package/dist/forms/AdminPersonalForm/index.d.ts +8 -0
  62. package/dist/forms/AdminPersonalForm/index.d.ts.map +1 -0
  63. package/dist/forms/AdminPersonalForm/index.js +13 -0
  64. package/dist/forms/AdminPersonalForm/interfaces.d.ts +7 -0
  65. package/dist/forms/AdminPersonalForm/interfaces.d.ts.map +1 -0
  66. package/dist/forms/AdminPersonalForm/interfaces.js +1 -0
  67. package/dist/forms/AdminPersonalForm/server.d.ts +6 -0
  68. package/dist/forms/AdminPersonalForm/server.d.ts.map +1 -0
  69. package/dist/forms/AdminPersonalForm/server.js +22 -0
  70. package/dist/index.d.ts +8 -0
  71. package/dist/index.d.ts.map +1 -0
  72. package/dist/index.js +7 -0
  73. package/dist/interfaces.d.ts +2 -0
  74. package/dist/interfaces.d.ts.map +1 -0
  75. package/dist/interfaces.js +1 -0
  76. package/dist/lists/AdminList/index.d.ts +4 -0
  77. package/dist/lists/AdminList/index.d.ts.map +1 -0
  78. package/dist/lists/AdminList/index.js +21 -0
  79. package/dist/lists/AdminList/server.d.ts +5 -0
  80. package/dist/lists/AdminList/server.d.ts.map +1 -0
  81. package/dist/lists/AdminList/server.js +6 -0
  82. package/dist/mail/AdminInviteMail.d.ts +6 -0
  83. package/dist/mail/AdminInviteMail.d.ts.map +1 -0
  84. package/dist/mail/AdminInviteMail.js +14 -0
  85. package/dist/register-admins-addon.d.ts +4 -0
  86. package/dist/register-admins-addon.d.ts.map +1 -0
  87. package/dist/register-admins-addon.js +5 -0
  88. package/dist/repositories/AdminRepository.d.ts +114 -0
  89. package/dist/repositories/AdminRepository.d.ts.map +1 -0
  90. package/dist/repositories/AdminRepository.js +63 -0
  91. package/dist/repositories/index.d.ts +147 -0
  92. package/dist/repositories/index.d.ts.map +1 -0
  93. package/dist/repositories/index.js +67 -0
  94. package/dist/repository/index.d.ts +149 -0
  95. package/dist/repository/index.d.ts.map +1 -0
  96. package/dist/repository/index.js +80 -0
  97. package/dist/rules/email.d.ts +4 -0
  98. package/dist/rules/email.d.ts.map +1 -0
  99. package/dist/rules/email.js +11 -0
  100. package/dist/rules/id.d.ts +11 -0
  101. package/dist/rules/id.d.ts.map +1 -0
  102. package/dist/rules/id.js +13 -0
  103. package/dist/schema.d.ts +96 -0
  104. package/dist/schema.d.ts.map +1 -0
  105. package/dist/schema.js +11 -0
  106. package/dist/utility/generate-admins-metadata.d.ts +5 -0
  107. package/dist/utility/generate-admins-metadata.d.ts.map +1 -0
  108. package/dist/utility/generate-admins-metadata.js +4 -0
  109. package/dist/utility/ids.d.ts +3 -0
  110. package/dist/utility/ids.d.ts.map +1 -0
  111. package/dist/utility/ids.js +1 -0
  112. package/dist/utility/interfaces.d.ts +5 -0
  113. package/dist/utility/interfaces.d.ts.map +1 -0
  114. package/dist/utility/interfaces.js +1 -0
  115. package/dist/utility/prepare-seed-admins.d.ts +4 -0
  116. package/dist/utility/prepare-seed-admins.d.ts.map +1 -0
  117. package/dist/utility/prepare-seed-admins.js +6 -0
  118. package/dist/utility/seed-admin.d.ts +10 -0
  119. package/dist/utility/seed-admin.d.ts.map +1 -0
  120. package/dist/utility/seed-admin.js +29 -0
  121. package/package.json +47 -0
@@ -0,0 +1,5 @@
1
+ import type { ListFunctionConfig, Paginated } from '@sqrzro/server/utility';
2
+ import type { Admin } from '../../utility/interfaces';
3
+ declare function getList({ page }: ListFunctionConfig): Promise<Paginated<Admin>>;
4
+ export default getList;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/lists/AdminList/server.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAG5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAEtD,iBAAe,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAE9E;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,6 @@
1
+ 'use server';
2
+ import AdminRepository from '../../repositories/AdminRepository';
3
+ async function getList({ page }) {
4
+ return AdminRepository.getPaginated({ page });
5
+ }
6
+ export default getList;
@@ -0,0 +1,6 @@
1
+ interface AdminInviteMailProps {
2
+ readonly token: string;
3
+ }
4
+ declare const _default: import('@sqrzro/server/mail').MailObject<AdminInviteMailProps>;
5
+ export default _default;
6
+ //# sourceMappingURL=AdminInviteMail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminInviteMail.d.ts","sourceRoot":"","sources":["../../src/mail/AdminInviteMail.tsx"],"names":[],"mappings":"AAEA,UAAU,oBAAoB;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CAC1B;;AAWD,wBAA2D"}
@@ -0,0 +1,14 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from 'react/jsx-runtime';
2
+ import { createMail } from '@sqrzro/server/mail';
3
+ function AdminInviteMail({ token }) {
4
+ return _jsxs('div', {
5
+ children: [
6
+ 'AdminInviteMail',
7
+ _jsx('a', {
8
+ href: `http://localhost:8001/onboarding/start?token=${token}`,
9
+ children: 'Accept Invite',
10
+ }),
11
+ ],
12
+ });
13
+ }
14
+ export default createMail('ADMIN INVITE', AdminInviteMail);
@@ -0,0 +1,4 @@
1
+ import type { AddonRegistrationConfig } from '@sqrzro/addons';
2
+ declare function registerAdminsAddon(config: AddonRegistrationConfig): void;
3
+ export default registerAdminsAddon;
4
+ //# sourceMappingURL=register-admins-addon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-admins-addon.d.ts","sourceRoot":"","sources":["../src/register-admins-addon.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAI9D,iBAAS,mBAAmB,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAElE;AAED,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { setConfig } from './config';
2
+ function registerAdminsAddon(config) {
3
+ setConfig(config);
4
+ }
5
+ export default registerAdminsAddon;
@@ -0,0 +1,114 @@
1
+ import { AdminID } from '../utility/ids';
2
+ import type { AdminData } from '../utility/interfaces';
3
+ export declare const ADMIN_ROLE = 100;
4
+ declare const _default: {
5
+ getByEmail: (email: string) => Promise<{
6
+ id: `adm_${string}`;
7
+ name: string;
8
+ email: string;
9
+ createdAt: Date;
10
+ deletedAt: Date | null;
11
+ } | null>;
12
+ create: ((data: AdminData) => Promise<{
13
+ id: `adm_${string}`;
14
+ name: string;
15
+ email: string;
16
+ createdAt: Date;
17
+ deletedAt: Date | null;
18
+ }>) & ((data: AdminData) => Promise<Promise<{
19
+ id: `adm_${string}`;
20
+ name: string;
21
+ email: string;
22
+ createdAt: Date;
23
+ deletedAt: Date | null;
24
+ }>>);
25
+ delete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
26
+ ensureByID: (id: `adm_${string}`) => Promise<{
27
+ id: `adm_${string}`;
28
+ name: string;
29
+ email: string;
30
+ createdAt: Date;
31
+ deletedAt: Date | null;
32
+ }>;
33
+ ensureByIndex: <K extends string>(key: K, value: any, fnConfig?: import("@sqrzro/server/database").SelectFunctionConfig<never, never> | undefined) => Promise<{
34
+ id: `adm_${string}`;
35
+ name: string;
36
+ email: string;
37
+ createdAt: Date;
38
+ deletedAt: Date | null;
39
+ }>;
40
+ ensureFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<{
41
+ id: `adm_${string}`;
42
+ name: string;
43
+ email: string;
44
+ createdAt: Date;
45
+ deletedAt: Date | null;
46
+ }>;
47
+ ensureID: (id: string | null | undefined) => `adm_${string}`;
48
+ ensureIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<`adm_${string}`>;
49
+ getAll: (fnConfig?: import("@sqrzro/server/database").SelectFunctionConfig<never, never> | undefined) => Promise<{
50
+ id: `adm_${string}`;
51
+ name: string;
52
+ email: string;
53
+ createdAt: Date;
54
+ deletedAt: Date | null;
55
+ }[]>;
56
+ getByID: (id: `adm_${string}`) => Promise<{
57
+ id: `adm_${string}`;
58
+ name: string;
59
+ email: string;
60
+ createdAt: Date;
61
+ deletedAt: Date | null;
62
+ } | null>;
63
+ getByIndex: <K extends string>(key: K, value: any, fnConfig?: import("@sqrzro/server/database").SelectFunctionConfig<never, never> | undefined) => Promise<{
64
+ id: `adm_${string}`;
65
+ name: string;
66
+ email: string;
67
+ createdAt: Date;
68
+ deletedAt: Date | null;
69
+ } | null>;
70
+ getFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<{
71
+ id: `adm_${string}`;
72
+ name: string;
73
+ email: string;
74
+ createdAt: Date;
75
+ deletedAt: Date | null;
76
+ } | null>;
77
+ getIDFromParams: (params?: Promise<Record<string, string>> | Record<string, string> | null) => Promise<`adm_${string}` | null>;
78
+ getPaginated: (fnConfig?: import("@sqrzro/server/database").PaginatedFunctionConfig<never, never> | undefined) => Promise<import("@sqrzro/server/utility").Paginated<{
79
+ id: `adm_${string}`;
80
+ name: string;
81
+ email: string;
82
+ createdAt: Date;
83
+ deletedAt: Date | null;
84
+ }>>;
85
+ guardID: {
86
+ (id: (string | null | undefined)[]): `adm_${string}`[];
87
+ (id: string | null | undefined): `adm_${string}` | null;
88
+ };
89
+ undelete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
90
+ update: ((data: Partial<AdminData> & {
91
+ id: AdminID;
92
+ }) => Promise<{
93
+ id: `adm_${string}`;
94
+ name: string;
95
+ email: string;
96
+ createdAt: Date;
97
+ deletedAt: Date | null;
98
+ }>) & ((data: Partial<AdminData> & {
99
+ id: AdminID;
100
+ }) => Promise<Promise<{
101
+ id: `adm_${string}`;
102
+ name: string;
103
+ email: string;
104
+ createdAt: Date;
105
+ deletedAt: Date | null;
106
+ }>>);
107
+ ensureFromSession: () => Promise<any>;
108
+ sendInvite: (user: {
109
+ id: string;
110
+ email: string;
111
+ }) => Promise<void>;
112
+ };
113
+ export default _default;
114
+ //# sourceMappingURL=AdminRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdminRepository.d.ts","sourceRoot":"","sources":["../../src/repositories/AdminRepository.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAI9D,eAAO,MAAM,UAAU,MAAM,CAAC;;wBAqEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA1B0B,OAAO;;;;;;;;YAAP,OAAO;;;;;;;;;;;;;;AAwBrE,wBAGE"}
@@ -0,0 +1,63 @@
1
+ import { extendRepository } from '@sqrzro/addons';
2
+ import withAuth from '@sqrzro/addon-auth/repository';
3
+ import withOnboarding from '@sqrzro/addon-onboarding/repository';
4
+ import { db } from '@sqrzro/server/database';
5
+ import { createRepository } from '@sqrzro/server/database';
6
+ import { generateID } from '@sqrzro/server/utility';
7
+ import { pick } from '@sqrzro/utility';
8
+ import { and, count, eq } from 'drizzle-orm';
9
+ import { ADMIN_PREFIX } from '../utility/ids';
10
+ import { adminTable } from '../schema';
11
+ export const ADMIN_ROLE = 100;
12
+ const fillable = ['email', 'name'];
13
+ const BaseAdminRepository = createRepository({
14
+ indexes: { email: adminTable.email, id: adminTable.id },
15
+ async makeCountQuery(conditions) {
16
+ const [meta] = await db
17
+ .select({ count: count() })
18
+ .from(adminTable)
19
+ .where(and(...conditions));
20
+ return meta.count;
21
+ },
22
+ async makeQuery(conditions, config) {
23
+ return db
24
+ .select()
25
+ .from(adminTable)
26
+ .where(and(...conditions))
27
+ .limit(config.limit)
28
+ .offset(config.offset);
29
+ },
30
+ async makeDeleteMutation(id) {
31
+ await db.update(adminTable).set({ deletedAt: new Date() }).where(eq(adminTable.id, id));
32
+ },
33
+ async makeUndeleteMutation(id) {
34
+ await db.update(adminTable).set({ deletedAt: null }).where(eq(adminTable.id, id));
35
+ },
36
+ async makeInsertMutation(data) {
37
+ const values = {
38
+ id: generateID(ADMIN_PREFIX),
39
+ ...pick(data, fillable),
40
+ };
41
+ const [result] = await db.insert(adminTable).values(values).returning();
42
+ return result;
43
+ },
44
+ async makeUpdateMutation(data) {
45
+ const [result] = await db
46
+ .update(adminTable)
47
+ .set(data)
48
+ .where(eq(adminTable.id, data.id))
49
+ .returning();
50
+ return result;
51
+ },
52
+ paramKey: 'admins[0]',
53
+ prefix: ADMIN_PREFIX,
54
+ });
55
+ const AdminRepository = extendRepository(BaseAdminRepository, withAuth({ role: ADMIN_ROLE }), withOnboarding({
56
+ baseURL: process.env.APP_URL,
57
+ role: ADMIN_ROLE,
58
+ siteName: process.env.APP_NAME,
59
+ }));
60
+ export default {
61
+ ...AdminRepository,
62
+ getByEmail: async (email) => AdminRepository.getByIndex('email', email),
63
+ };
@@ -0,0 +1,147 @@
1
+ import { AdminID } from '../utility/ids';
2
+ import type { AdminData } from '../utility/interfaces';
3
+ export declare const ADMIN_ROLE = 100;
4
+ declare const _default: {
5
+ getByEmail: (email: string) => Promise<{
6
+ email: string;
7
+ id: `adm_${string}`;
8
+ name: string;
9
+ createdAt: Date;
10
+ deletedAt: Date | null;
11
+ } | null>;
12
+ create: ((data: AdminData) => Promise<{
13
+ email: string;
14
+ id: `adm_${string}`;
15
+ name: string;
16
+ createdAt: Date;
17
+ deletedAt: Date | null;
18
+ }>) &
19
+ ((data: AdminData) => Promise<
20
+ Promise<{
21
+ email: string;
22
+ id: `adm_${string}`;
23
+ name: string;
24
+ createdAt: Date;
25
+ deletedAt: Date | null;
26
+ }>
27
+ >);
28
+ delete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
29
+ ensureByID: (id: `adm_${string}`) => Promise<{
30
+ email: string;
31
+ id: `adm_${string}`;
32
+ name: string;
33
+ createdAt: Date;
34
+ deletedAt: Date | null;
35
+ }>;
36
+ ensureByIndex: <K extends string>(
37
+ key: K,
38
+ value: any,
39
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
40
+ ) => Promise<{
41
+ email: string;
42
+ id: `adm_${string}`;
43
+ name: string;
44
+ createdAt: Date;
45
+ deletedAt: Date | null;
46
+ }>;
47
+ ensureFromParams: (
48
+ params?: Promise<Record<string, string>> | Record<string, string> | null
49
+ ) => Promise<{
50
+ email: string;
51
+ id: `adm_${string}`;
52
+ name: string;
53
+ createdAt: Date;
54
+ deletedAt: Date | null;
55
+ }>;
56
+ ensureID: (id: string | null | undefined) => `adm_${string}`;
57
+ ensureIDFromParams: (
58
+ params?: Promise<Record<string, string>> | Record<string, string> | null
59
+ ) => Promise<`adm_${string}`>;
60
+ getAll: (
61
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
62
+ ) => Promise<
63
+ {
64
+ email: string;
65
+ id: `adm_${string}`;
66
+ name: string;
67
+ createdAt: Date;
68
+ deletedAt: Date | null;
69
+ }[]
70
+ >;
71
+ getByID: (id: `adm_${string}`) => Promise<{
72
+ email: string;
73
+ id: `adm_${string}`;
74
+ name: string;
75
+ createdAt: Date;
76
+ deletedAt: Date | null;
77
+ } | null>;
78
+ getByIndex: <K extends string>(
79
+ key: K,
80
+ value: any,
81
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
82
+ ) => Promise<{
83
+ email: string;
84
+ id: `adm_${string}`;
85
+ name: string;
86
+ createdAt: Date;
87
+ deletedAt: Date | null;
88
+ } | null>;
89
+ getFromParams: (
90
+ params?: Promise<Record<string, string>> | Record<string, string> | null
91
+ ) => Promise<{
92
+ email: string;
93
+ id: `adm_${string}`;
94
+ name: string;
95
+ createdAt: Date;
96
+ deletedAt: Date | null;
97
+ } | null>;
98
+ getIDFromParams: (
99
+ params?: Promise<Record<string, string>> | Record<string, string> | null
100
+ ) => Promise<`adm_${string}` | null>;
101
+ getPaginated: (
102
+ fnConfig?:
103
+ | import('@sqrzro/server/database').PaginatedFunctionConfig<never, never>
104
+ | undefined
105
+ ) => Promise<
106
+ import('@sqrzro/server/utility').Paginated<{
107
+ email: string;
108
+ id: `adm_${string}`;
109
+ name: string;
110
+ createdAt: Date;
111
+ deletedAt: Date | null;
112
+ }>
113
+ >;
114
+ guardID: {
115
+ (id: (string | null | undefined)[]): `adm_${string}`[];
116
+ (id: string | null | undefined): `adm_${string}` | null;
117
+ };
118
+ undelete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
119
+ update: ((
120
+ data: Partial<AdminData> & {
121
+ id: AdminID;
122
+ }
123
+ ) => Promise<{
124
+ email: string;
125
+ id: `adm_${string}`;
126
+ name: string;
127
+ createdAt: Date;
128
+ deletedAt: Date | null;
129
+ }>) &
130
+ ((
131
+ data: Partial<AdminData> & {
132
+ id: AdminID;
133
+ }
134
+ ) => Promise<
135
+ Promise<{
136
+ email: string;
137
+ id: `adm_${string}`;
138
+ name: string;
139
+ createdAt: Date;
140
+ deletedAt: Date | null;
141
+ }>
142
+ >);
143
+ ensureFromSession: () => Promise<any>;
144
+ sendInvite: (user: { id: string; email: string }) => Promise<void>;
145
+ };
146
+ export default _default;
147
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repositories/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAI9D,eAAO,MAAM,UAAU,MAAM,CAAC;;wBAqEA,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA1B0B,OAAO;;;;;;;;YAAP,OAAO;;;;;;;;;;;;;;AAwBrE,wBAGE"}
@@ -0,0 +1,67 @@
1
+ import { extendRepository } from '@sqrzro/addons';
2
+ import withAuth from '@sqrzro/addon-auth/repository';
3
+ import withOnboarding from '@sqrzro/addon-onboarding/repository';
4
+ import { db } from '@sqrzro/server/database';
5
+ import { createRepository } from '@sqrzro/server/database';
6
+ import { generateID } from '@sqrzro/server/utility';
7
+ import { pick } from '@sqrzro/utility';
8
+ import { and, count, eq } from 'drizzle-orm';
9
+ import { ADMIN_PREFIX } from '../utility/ids';
10
+ import { adminTable } from '../schema';
11
+ export const ADMIN_ROLE = 100;
12
+ const fillable = ['email', 'name'];
13
+ const BaseAdminRepository = createRepository({
14
+ indexes: { email: adminTable.email, id: adminTable.id },
15
+ async makeCountQuery(conditions) {
16
+ const [meta] = await db
17
+ .select({ count: count() })
18
+ .from(adminTable)
19
+ .where(and(...conditions));
20
+ return meta.count;
21
+ },
22
+ async makeQuery(conditions, config) {
23
+ return db
24
+ .select()
25
+ .from(adminTable)
26
+ .where(and(...conditions))
27
+ .limit(config.limit)
28
+ .offset(config.offset);
29
+ },
30
+ async makeDeleteMutation(id) {
31
+ await db.update(adminTable).set({ deletedAt: new Date() }).where(eq(adminTable.id, id));
32
+ },
33
+ async makeUndeleteMutation(id) {
34
+ await db.update(adminTable).set({ deletedAt: null }).where(eq(adminTable.id, id));
35
+ },
36
+ async makeInsertMutation(data) {
37
+ const values = {
38
+ id: generateID(ADMIN_PREFIX),
39
+ ...pick(data, fillable),
40
+ };
41
+ const [result] = await db.insert(adminTable).values(values).returning();
42
+ return result;
43
+ },
44
+ async makeUpdateMutation(data) {
45
+ const [result] = await db
46
+ .update(adminTable)
47
+ .set(data)
48
+ .where(eq(adminTable.id, data.id))
49
+ .returning();
50
+ return result;
51
+ },
52
+ paramKey: 'admins[0]',
53
+ prefix: ADMIN_PREFIX,
54
+ });
55
+ const AdminRepository = extendRepository(
56
+ BaseAdminRepository,
57
+ withAuth({ role: ADMIN_ROLE }),
58
+ withOnboarding({
59
+ baseURL: process.env.APP_URL,
60
+ role: ADMIN_ROLE,
61
+ siteName: process.env.APP_NAME,
62
+ })
63
+ );
64
+ export default {
65
+ ...AdminRepository,
66
+ getByEmail: async (email) => AdminRepository.getByIndex('email', email),
67
+ };
@@ -0,0 +1,149 @@
1
+ import { AdminID } from '../utility/ids';
2
+ import type { AdminData } from '../utility/interfaces';
3
+ export declare const ADMIN_ROLE = 100;
4
+ declare function createAdminRepository(site: { name: string; url: string }): {
5
+ getByEmail: (email: string) => Promise<{
6
+ email: string;
7
+ id: `adm_${string}`;
8
+ name: string;
9
+ createdAt: Date;
10
+ deletedAt: Date | null;
11
+ } | null>;
12
+ create: ((data: AdminData) => Promise<{
13
+ email: string;
14
+ id: `adm_${string}`;
15
+ name: string;
16
+ createdAt: Date;
17
+ deletedAt: Date | null;
18
+ }>) &
19
+ ((data: AdminData) => Promise<
20
+ Promise<{
21
+ email: string;
22
+ id: `adm_${string}`;
23
+ name: string;
24
+ createdAt: Date;
25
+ deletedAt: Date | null;
26
+ }>
27
+ >);
28
+ delete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
29
+ ensureByID: (id: `adm_${string}`) => Promise<{
30
+ email: string;
31
+ id: `adm_${string}`;
32
+ name: string;
33
+ createdAt: Date;
34
+ deletedAt: Date | null;
35
+ }>;
36
+ ensureByIndex: <K extends string>(
37
+ key: K,
38
+ value: any,
39
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
40
+ ) => Promise<{
41
+ email: string;
42
+ id: `adm_${string}`;
43
+ name: string;
44
+ createdAt: Date;
45
+ deletedAt: Date | null;
46
+ }>;
47
+ ensureFromParams: (
48
+ params?: Promise<Record<string, string>> | Record<string, string> | null
49
+ ) => Promise<{
50
+ email: string;
51
+ id: `adm_${string}`;
52
+ name: string;
53
+ createdAt: Date;
54
+ deletedAt: Date | null;
55
+ }>;
56
+ ensureID: (id: string | null | undefined) => `adm_${string}`;
57
+ ensureIDFromParams: (
58
+ params?: Promise<Record<string, string>> | Record<string, string> | null
59
+ ) => Promise<`adm_${string}`>;
60
+ getAll: (
61
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
62
+ ) => Promise<
63
+ {
64
+ email: string;
65
+ id: `adm_${string}`;
66
+ name: string;
67
+ createdAt: Date;
68
+ deletedAt: Date | null;
69
+ }[]
70
+ >;
71
+ getByID: (id: `adm_${string}`) => Promise<{
72
+ email: string;
73
+ id: `adm_${string}`;
74
+ name: string;
75
+ createdAt: Date;
76
+ deletedAt: Date | null;
77
+ } | null>;
78
+ getByIndex: <K extends string>(
79
+ key: K,
80
+ value: any,
81
+ fnConfig?: import('@sqrzro/server/database').SelectFunctionConfig<never, never> | undefined
82
+ ) => Promise<{
83
+ email: string;
84
+ id: `adm_${string}`;
85
+ name: string;
86
+ createdAt: Date;
87
+ deletedAt: Date | null;
88
+ } | null>;
89
+ getFromParams: (
90
+ params?: Promise<Record<string, string>> | Record<string, string> | null
91
+ ) => Promise<{
92
+ email: string;
93
+ id: `adm_${string}`;
94
+ name: string;
95
+ createdAt: Date;
96
+ deletedAt: Date | null;
97
+ } | null>;
98
+ getIDFromParams: (
99
+ params?: Promise<Record<string, string>> | Record<string, string> | null
100
+ ) => Promise<`adm_${string}` | null>;
101
+ getPaginated: (
102
+ fnConfig?:
103
+ | import('@sqrzro/server/database').PaginatedFunctionConfig<never, never>
104
+ | undefined
105
+ ) => Promise<
106
+ import('@sqrzro/server/utility').Paginated<{
107
+ email: string;
108
+ id: `adm_${string}`;
109
+ name: string;
110
+ createdAt: Date;
111
+ deletedAt: Date | null;
112
+ }>
113
+ >;
114
+ guardID: {
115
+ (id: (string | null | undefined)[]): `adm_${string}`[];
116
+ (id: string | null | undefined): `adm_${string}` | null;
117
+ };
118
+ undelete: ((id: `adm_${string}`) => Promise<void>) & ((id: string) => Promise<void>);
119
+ update: ((
120
+ data: Partial<AdminData> & {
121
+ id: AdminID;
122
+ }
123
+ ) => Promise<{
124
+ email: string;
125
+ id: `adm_${string}`;
126
+ name: string;
127
+ createdAt: Date;
128
+ deletedAt: Date | null;
129
+ }>) &
130
+ ((
131
+ data: Partial<AdminData> & {
132
+ id: AdminID;
133
+ }
134
+ ) => Promise<
135
+ Promise<{
136
+ email: string;
137
+ id: `adm_${string}`;
138
+ name: string;
139
+ createdAt: Date;
140
+ deletedAt: Date | null;
141
+ }>
142
+ >);
143
+ ensureFromSession: () => Promise<any>;
144
+ sendInvite: (user: { id: string; email: string }) => Promise<void>;
145
+ };
146
+ export declare function setRepository(repo: ReturnType<typeof createAdminRepository>): void;
147
+ export declare function getRepository(): ReturnType<typeof createAdminRepository>;
148
+ export default createAdminRepository;
149
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repository/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAgB,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAS,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAI9D,eAAO,MAAM,UAAU,MAAM,CAAC;AAI9B,iBAAS,qBAAqB,CAAC,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE;wBAkEhC,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA1B0B,OAAO;;;;;;;;YAAP,OAAO;;;;;;;;;;;;;EA4BxE;AAID,wBAAgB,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,GAAG,IAAI,CAElF;AAED,wBAAgB,aAAa,IAAI,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAKxE;AAED,eAAe,qBAAqB,CAAC"}