hh-contracts 0.0.96 → 0.0.98
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/CHANGELOG.md +5 -0
- package/TODO.md +1 -0
- package/app-menu/get.query.ts +2 -2
- package/build/app-menu/get.query.js +1 -1
- package/build/common/constants/domain-name.constant.js +9 -0
- package/build/common/constants/index.js +2 -0
- package/build/common/constants/slug.constant.js +1 -0
- package/build/common/constants/time-zone.constant.js +7 -0
- package/build/common/models/domain-name.schema.js +8 -4
- package/build/common/models/index.js +1 -1
- package/build/common/models/slug.schema.js +5 -1
- package/build/common/models/timezone.schema.js +3 -4
- package/build/common/models/{uuid-array.schema.js → uuid.schemas.js} +3 -2
- package/build/companies/company.models.js +1 -1
- package/build/hotels/amenities/hotel-amenity.model.js +2 -1
- package/build/hotels/constants/hotel-integration-connection-state.constant.js +10 -0
- package/build/hotels/constants/hotel-integration-credential-status.constant.js +9 -0
- package/build/hotels/constants/hotel-integration-sync-status.constant.js +10 -0
- package/build/hotels/constants/index.js +3 -0
- package/build/hotels/contacts/hotel-contact.model.js +1 -1
- package/build/hotels/contracts/create-hotel.contract.js +2 -7
- package/build/hotels/contracts/find-hotel.contract.js +4 -4
- package/build/hotels/contracts/update-hotel.contract.js +1 -1
- package/build/hotels/domains/contracts/find-hotel-domain-settings.contract.js +13 -0
- package/build/hotels/domains/contracts/update-hotel-domain-settings.contract.js +14 -0
- package/build/hotels/domains/hotel-domains.api.js +12 -0
- package/build/hotels/{settings/hotel-domain-settings.schema.js → domains/hotel-domains.schema.js} +6 -6
- package/build/hotels/{settings → domains}/index.js +2 -2
- package/build/hotels/hotel.models.js +18 -14
- package/build/hotels/hotels.api.js +8 -2
- package/build/hotels/index.js +1 -1
- package/build/hotels/integrations/configs/index.js +17 -0
- package/build/hotels/integrations/configs/opera-integration-config.model.js +41 -0
- package/build/hotels/integrations/contracts/create-hotel-integration.contract.js +14 -0
- package/build/hotels/integrations/contracts/delete-hotel-integration.contract.js +46 -0
- package/build/hotels/integrations/contracts/find-all-hotel-integrations.contract.js +48 -0
- package/build/hotels/integrations/contracts/find-hotel-integration.contract.js +13 -0
- package/build/hotels/integrations/contracts/index.js +21 -0
- package/build/hotels/integrations/contracts/update-hotel-integration.contract.js +14 -0
- package/build/hotels/integrations/hotel-integration.model.js +43 -5
- package/build/hotels/integrations/hotel-integrations.api.js +1 -1
- package/build/hotels/integrations/index.js +1 -0
- package/build/permissions/contracts/create-permission.contract.js +2 -6
- package/build/permissions/contracts/find-permission.contract.js +1 -1
- package/build/permissions/contracts/update-permission.contract.js +1 -1
- package/build/permissions/permission.models.js +13 -9
- package/build/permissions/permisson-conditions.model.js +41 -0
- package/build/roles/contracts/create-role.contract.js +2 -6
- package/build/roles/contracts/find-role.contract.js +1 -1
- package/build/roles/contracts/update-role.contract.js +1 -1
- package/build/roles/role.models.js +14 -11
- package/common/constants/domain-name.constant.ts +8 -0
- package/common/constants/index.ts +2 -0
- package/common/constants/slug.constant.ts +2 -1
- package/common/constants/time-zone.constant.ts +4 -0
- package/common/models/domain-name.schema.ts +8 -9
- package/common/models/index.ts +1 -1
- package/common/models/slug.schema.ts +5 -1
- package/common/models/timezone.schema.ts +6 -7
- package/common/models/uuid.schemas.ts +4 -0
- package/companies/company.models.ts +2 -2
- package/hotels/amenities/hotel-amenity.model.ts +2 -1
- package/hotels/constants/hotel-integration-connection-state.constant.ts +13 -0
- package/hotels/constants/hotel-integration-credential-status.constant.ts +12 -0
- package/hotels/constants/hotel-integration-sync-status.constant.ts +13 -0
- package/hotels/constants/index.ts +3 -0
- package/hotels/contacts/hotel-contact.model.ts +2 -2
- package/hotels/contracts/create-hotel.contract.ts +3 -8
- package/hotels/contracts/find-hotel.contract.ts +12 -7
- package/hotels/contracts/update-hotel.contract.ts +2 -2
- package/hotels/domains/contracts/find-hotel-domain-settings.contract.ts +13 -0
- package/hotels/domains/contracts/update-hotel-domain-settings.contract.ts +16 -0
- package/hotels/domains/hotel-domains.api.ts +11 -0
- package/hotels/domains/hotel-domains.schema.ts +25 -0
- package/hotels/domains/index.ts +3 -0
- package/hotels/hotel.models.ts +31 -21
- package/hotels/hotels.api.ts +8 -1
- package/hotels/index.ts +1 -1
- package/hotels/integrations/configs/index.ts +1 -0
- package/hotels/integrations/configs/opera-integration-config.model.ts +6 -0
- package/hotels/integrations/contracts/create-hotel-integration.contract.ts +21 -0
- package/hotels/integrations/contracts/delete-hotel-integration.contract.ts +14 -0
- package/hotels/integrations/contracts/find-all-hotel-integrations.contract.ts +18 -0
- package/hotels/integrations/contracts/find-hotel-integration.contract.ts +15 -0
- package/hotels/integrations/contracts/index.ts +5 -0
- package/hotels/integrations/contracts/update-hotel-integration.contract.ts +21 -0
- package/hotels/integrations/hotel-integration.model.ts +60 -9
- package/hotels/integrations/hotel-integrations.api.ts +1 -1
- package/hotels/integrations/index.ts +1 -0
- package/package.json +1 -1
- package/permissions/contracts/create-permission.contract.ts +3 -7
- package/permissions/contracts/find-permission.contract.ts +2 -2
- package/permissions/contracts/update-permission.contract.ts +2 -2
- package/permissions/permission.models.ts +19 -13
- package/permissions/permisson-conditions.model.ts +7 -0
- package/roles/contracts/create-role.contract.ts +3 -7
- package/roles/contracts/find-role.contract.ts +2 -2
- package/roles/contracts/update-role.contract.ts +2 -2
- package/roles/role.models.ts +26 -15
- package/build/hotels/settings/contracts/find-hotel-domain-settings.contract.js +0 -13
- package/build/hotels/settings/contracts/update-hotel-domain-settings.contract.js +0 -14
- package/build/hotels/settings/hotel-domain-settings.api.js +0 -12
- package/common/models/uuid-array.schema.ts +0 -3
- package/hotels/settings/contracts/find-hotel-domain-settings.contract.ts +0 -13
- package/hotels/settings/contracts/update-hotel-domain-settings.contract.ts +0 -19
- package/hotels/settings/hotel-domain-settings.api.ts +0 -11
- package/hotels/settings/hotel-domain-settings.schema.ts +0 -24
- package/hotels/settings/index.ts +0 -3
- /package/build/hotels/{settings → domains}/contracts/index.js +0 -0
- /package/hotels/{settings → domains}/contracts/index.ts +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import {
|
|
3
|
+
DomainNameSchema,
|
|
4
|
+
IsoDatetimeSchema,
|
|
5
|
+
KIND_OF_APP_VALUES,
|
|
6
|
+
TimestampSchema,
|
|
7
|
+
UuidSchema,
|
|
8
|
+
} from '../../common';
|
|
9
|
+
|
|
10
|
+
export const HotelDomainSchema = z.object({
|
|
11
|
+
kindOfApp: z.enum(KIND_OF_APP_VALUES),
|
|
12
|
+
customDomain: DomainNameSchema.optional(),
|
|
13
|
+
isCustomDomainVerified: z.boolean().default(false),
|
|
14
|
+
customDomainVerifiedAt: IsoDatetimeSchema.optional(),
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export const HotelDomainPersistedSchema = HotelDomainSchema.extend({
|
|
18
|
+
id: UuidSchema,
|
|
19
|
+
hotelId: UuidSchema,
|
|
20
|
+
}).extend(TimestampSchema.shape);
|
|
21
|
+
|
|
22
|
+
export const HotelDomainListSchema = z.array(HotelDomainPersistedSchema);
|
|
23
|
+
|
|
24
|
+
export type THotelDomain = z.infer<typeof HotelDomainSchema>;
|
|
25
|
+
export type THotelDomainPersisted = z.infer<typeof HotelDomainPersistedSchema>;
|
package/hotels/hotel.models.ts
CHANGED
|
@@ -7,30 +7,30 @@ import {
|
|
|
7
7
|
makeTranslations,
|
|
8
8
|
IsoTimeSchema,
|
|
9
9
|
TimezoneSchema,
|
|
10
|
+
UuidSchema,
|
|
10
11
|
} from '../common';
|
|
11
12
|
|
|
12
|
-
export const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
checkOutUntil: IsoTimeSchema,
|
|
28
|
-
// добавить тип настроек
|
|
29
|
-
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
30
|
-
version: z.number().int().nonnegative(),
|
|
31
|
-
})
|
|
32
|
-
.extend(TimestampSchema.shape);
|
|
13
|
+
export const HotelSchema = z.object({
|
|
14
|
+
slug: SlugSchema,
|
|
15
|
+
chainId: UuidSchema.nullable().optional(),
|
|
16
|
+
status: z.enum(AppStatuses.HOTEL_VALUES).optional(), // сервер может проставить дефолт
|
|
17
|
+
category: z.string().min(1).max(64).nullable().optional(),
|
|
18
|
+
timezone: TimezoneSchema,
|
|
19
|
+
currency: z.string().length(3),
|
|
20
|
+
defaultLang: z.enum(LANGUAGE_KEYS),
|
|
21
|
+
availableLangs: z.array(z.enum(LANGUAGE_KEYS)),
|
|
22
|
+
stars: z.number().int().min(1).max(5).nullable().optional(),
|
|
23
|
+
checkInFrom: IsoTimeSchema,
|
|
24
|
+
checkOutUntil: IsoTimeSchema,
|
|
25
|
+
metadata: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
26
|
+
});
|
|
27
|
+
export type THotel = z.infer<typeof HotelSchema>;
|
|
33
28
|
|
|
29
|
+
export const HotelPersistedSchema = HotelSchema.required({ status: true }).extend({
|
|
30
|
+
id: UuidSchema,
|
|
31
|
+
version: z.number().int().nonnegative(),
|
|
32
|
+
...TimestampSchema.shape,
|
|
33
|
+
});
|
|
34
34
|
export type THotelPersisted = z.infer<typeof HotelPersistedSchema>;
|
|
35
35
|
|
|
36
36
|
export const HotelTranslationsSchema = z.object({
|
|
@@ -39,11 +39,21 @@ export const HotelTranslationsSchema = z.object({
|
|
|
39
39
|
});
|
|
40
40
|
export type THotelTranslations = z.infer<typeof HotelTranslationsSchema>;
|
|
41
41
|
|
|
42
|
+
export const HotelWriteSchema = HotelSchema.extend({
|
|
43
|
+
translations: makeTranslations(HotelTranslationsSchema),
|
|
44
|
+
});
|
|
45
|
+
export type THotelWrite = z.infer<typeof HotelWriteSchema>;
|
|
46
|
+
|
|
42
47
|
export const HotelWithTranslationsSchema = HotelPersistedSchema.extend({
|
|
43
48
|
translations: makeTranslations(HotelTranslationsSchema),
|
|
44
49
|
});
|
|
45
50
|
export type THotelWithTranslations = z.infer<typeof HotelWithTranslationsSchema>;
|
|
46
51
|
|
|
52
|
+
export const HotelDetailSchema = HotelPersistedSchema.extend({
|
|
53
|
+
translations: makeTranslations(HotelTranslationsSchema),
|
|
54
|
+
});
|
|
55
|
+
export type THotelDetail = z.infer<typeof HotelDetailSchema>;
|
|
56
|
+
|
|
47
57
|
export const HotelListItemSchema = HotelPersistedSchema.omit({
|
|
48
58
|
chainId: true,
|
|
49
59
|
metadata: true,
|
package/hotels/hotels.api.ts
CHANGED
|
@@ -8,8 +8,15 @@ export const HOTELS_CONTROLLER = {
|
|
|
8
8
|
findById: 'by-id/:hotelId',
|
|
9
9
|
updateById: 'by-id/:hotelId',
|
|
10
10
|
deleteById: 'by-id/:hotelId',
|
|
11
|
-
|
|
11
|
+
},
|
|
12
|
+
} as const satisfies TController;
|
|
13
|
+
|
|
14
|
+
export const HOTELS_BY_SLUG_CONTROLLER = {
|
|
15
|
+
prefix: 'hotels/by-slug/:hotelSlug',
|
|
16
|
+
endpoints: {
|
|
17
|
+
find: '',
|
|
12
18
|
},
|
|
13
19
|
} as const satisfies TController;
|
|
14
20
|
|
|
15
21
|
export const HOTELS_API = createApi(HOTELS_CONTROLLER);
|
|
22
|
+
export const HOTELS_BY_SLUG_API = createApi(HOTELS_BY_SLUG_CONTROLLER);
|
package/hotels/index.ts
CHANGED
|
@@ -8,7 +8,7 @@ export * from './location';
|
|
|
8
8
|
export * from './policies';
|
|
9
9
|
export * from './ratings';
|
|
10
10
|
export * from './sites';
|
|
11
|
-
export * from './
|
|
11
|
+
export * from './domains';
|
|
12
12
|
export * from './themes';
|
|
13
13
|
export * from './hotel.models';
|
|
14
14
|
export * from './hotels.api';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './opera-integration-config.model';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { HTTP_METHODS } from '../../../common';
|
|
3
|
+
import { HOTEL_INTEGRATIONS_API, HOTEL_INTEGRATIONS_CONTROLLER } from '../hotel-integrations.api';
|
|
4
|
+
import {
|
|
5
|
+
HotelIntegrationDetailSchema,
|
|
6
|
+
HotelIntegrationWriteSchema,
|
|
7
|
+
} from '../hotel-integration.model';
|
|
8
|
+
|
|
9
|
+
export namespace CreateHotelIntegrationContract {
|
|
10
|
+
export const getUrl = HOTEL_INTEGRATIONS_API.create;
|
|
11
|
+
export const endpoint = HOTEL_INTEGRATIONS_CONTROLLER.endpoints.create;
|
|
12
|
+
export const httpMethod = HTTP_METHODS.post;
|
|
13
|
+
|
|
14
|
+
export const RequestSchema = HotelIntegrationWriteSchema;
|
|
15
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
16
|
+
|
|
17
|
+
export const ResponseSchema = HotelIntegrationDetailSchema;
|
|
18
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
19
|
+
|
|
20
|
+
export type TPathParams = { hotelId: string };
|
|
21
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { HTTP_METHODS } from '../../../common';
|
|
3
|
+
import { HOTEL_INTEGRATIONS_API, HOTEL_INTEGRATIONS_CONTROLLER } from '../hotel-integrations.api';
|
|
4
|
+
|
|
5
|
+
export namespace DeleteHotelIntegrationContract {
|
|
6
|
+
export const getUrl = HOTEL_INTEGRATIONS_API.delete;
|
|
7
|
+
export const endpoint = HOTEL_INTEGRATIONS_CONTROLLER.endpoints.delete;
|
|
8
|
+
export const httpMethod = HTTP_METHODS.delete;
|
|
9
|
+
|
|
10
|
+
export const ResponseSchema = z.void();
|
|
11
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
12
|
+
|
|
13
|
+
export type TPathParams = { hotelId: string; integrationId: string };
|
|
14
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { HTTP_METHODS, SearchSchema } from '../../../common';
|
|
3
|
+
import { HOTEL_INTEGRATIONS_API, HOTEL_INTEGRATIONS_CONTROLLER } from '../hotel-integrations.api';
|
|
4
|
+
import { HotelIntegrationSchema } from '../hotel-integration.model';
|
|
5
|
+
|
|
6
|
+
export namespace FindAllHotelIntegrationsContract {
|
|
7
|
+
export const getUrl = HOTEL_INTEGRATIONS_API.findAll;
|
|
8
|
+
export const endpoint = HOTEL_INTEGRATIONS_CONTROLLER.endpoints.findAll;
|
|
9
|
+
export const httpMethod = HTTP_METHODS.get;
|
|
10
|
+
|
|
11
|
+
export const RequestSchema = SearchSchema;
|
|
12
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
13
|
+
|
|
14
|
+
export const ResponseSchema = z.array(HotelIntegrationSchema);
|
|
15
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
16
|
+
|
|
17
|
+
export type TPathParams = { hotelId: string };
|
|
18
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { HTTP_METHODS } from '../../../common';
|
|
3
|
+
import { HOTEL_INTEGRATIONS_API, HOTEL_INTEGRATIONS_CONTROLLER } from '../hotel-integrations.api';
|
|
4
|
+
import { HotelIntegrationDetailSchema } from '../hotel-integration.model';
|
|
5
|
+
|
|
6
|
+
export namespace FindHotelIntegrationContract {
|
|
7
|
+
export const getUrl = HOTEL_INTEGRATIONS_API.findOne;
|
|
8
|
+
export const endpoint = HOTEL_INTEGRATIONS_CONTROLLER.endpoints.findOne;
|
|
9
|
+
export const httpMethod = HTTP_METHODS.get;
|
|
10
|
+
|
|
11
|
+
export const ResponseSchema = HotelIntegrationDetailSchema;
|
|
12
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
|
+
|
|
14
|
+
export type TPathParams = { hotelId: string; integrationId: string };
|
|
15
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './find-all-hotel-integrations.contract';
|
|
2
|
+
export * from './find-hotel-integration.contract';
|
|
3
|
+
export * from './create-hotel-integration.contract';
|
|
4
|
+
export * from './update-hotel-integration.contract';
|
|
5
|
+
export * from './delete-hotel-integration.contract';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
import { HTTP_METHODS } from '../../../common';
|
|
3
|
+
import { HOTEL_INTEGRATIONS_API, HOTEL_INTEGRATIONS_CONTROLLER } from '../hotel-integrations.api';
|
|
4
|
+
import {
|
|
5
|
+
HotelIntegrationDetailSchema,
|
|
6
|
+
HotelIntegrationWriteSchema,
|
|
7
|
+
} from '../hotel-integration.model';
|
|
8
|
+
|
|
9
|
+
export namespace UpdateHotelIntegrationContract {
|
|
10
|
+
export const getUrl = HOTEL_INTEGRATIONS_API.update;
|
|
11
|
+
export const endpoint = HOTEL_INTEGRATIONS_CONTROLLER.endpoints.update;
|
|
12
|
+
export const httpMethod = HTTP_METHODS.put;
|
|
13
|
+
|
|
14
|
+
export const RequestSchema = HotelIntegrationWriteSchema;
|
|
15
|
+
export type TRequest = z.infer<typeof RequestSchema>;
|
|
16
|
+
|
|
17
|
+
export const ResponseSchema = HotelIntegrationDetailSchema;
|
|
18
|
+
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
19
|
+
|
|
20
|
+
export type TPathParams = { hotelId: string; integrationId: string };
|
|
21
|
+
}
|
|
@@ -1,29 +1,80 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
import { TimestampSchema } from '../../common';
|
|
3
|
-
import {
|
|
2
|
+
import { SlugSchema, TimestampSchema } from '../../common';
|
|
3
|
+
import {
|
|
4
|
+
HOTEL_INTEGRATION_CONNECTION_STATE_VALUES,
|
|
5
|
+
HOTEL_INTEGRATION_CREDENTIAL_STATUS_VALUES,
|
|
6
|
+
HOTEL_INTEGRATION_PROVIDER_VALUES,
|
|
7
|
+
HOTEL_INTEGRATION_SYNC_STATUS_VALUES,
|
|
8
|
+
} from '../constants';
|
|
9
|
+
import { OperaIntegrationConfigSchema } from './configs';
|
|
4
10
|
|
|
5
|
-
export const
|
|
11
|
+
export const HotelIntegrationConfigSchema = z.discriminatedUnion('provider', [
|
|
12
|
+
OperaIntegrationConfigSchema,
|
|
13
|
+
]);
|
|
14
|
+
|
|
15
|
+
export const HotelIntegrationSchema = z.object({
|
|
16
|
+
alias: SlugSchema,
|
|
17
|
+
config: HotelIntegrationConfigSchema,
|
|
18
|
+
credentialId: z.uuid().nullable().optional(),
|
|
19
|
+
});
|
|
20
|
+
export type THotelIntegration = z.infer<typeof HotelIntegrationSchema>;
|
|
21
|
+
|
|
22
|
+
export const HotelIntegrationPersistedSchema = HotelIntegrationSchema.required({
|
|
23
|
+
credentialId: true,
|
|
24
|
+
}).extend({
|
|
25
|
+
id: z.uuid(),
|
|
26
|
+
secretHash: z.string().min(1),
|
|
27
|
+
secretSalt: z.string().min(1),
|
|
28
|
+
...TimestampSchema.shape,
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
export const HotelIntegrationWriteSchema = HotelIntegrationSchema;
|
|
32
|
+
export type THotelIntegrationWrite = z.infer<typeof HotelIntegrationWriteSchema>;
|
|
33
|
+
|
|
34
|
+
export const HotelIntegrationDetailSchema = HotelIntegrationPersistedSchema.omit({
|
|
35
|
+
secretHash: true,
|
|
36
|
+
secretSalt: true,
|
|
37
|
+
});
|
|
38
|
+
export type THotelIntegrationDetail = z.infer<typeof HotelIntegrationDetailSchema>;
|
|
39
|
+
|
|
40
|
+
export const HotelIntegrationAssignSchema = z
|
|
6
41
|
.object({
|
|
42
|
+
id: z.uuid(),
|
|
43
|
+
integrationId: z.uuid(),
|
|
7
44
|
hotelId: z.uuid(),
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
11
|
-
credentialId: z.uuid().optional(),
|
|
45
|
+
hotelExternalId: z.string(),
|
|
46
|
+
isActive: z.boolean().default(true),
|
|
12
47
|
})
|
|
13
48
|
.extend(TimestampSchema.shape);
|
|
49
|
+
export type THotelIntegrationAssign = z.infer<typeof HotelIntegrationAssignSchema>;
|
|
14
50
|
|
|
15
|
-
export
|
|
51
|
+
export const HotelIntegrationConnectionSchema = z
|
|
52
|
+
.object({
|
|
53
|
+
id: z.uuid(),
|
|
54
|
+
integrationId: z.uuid(),
|
|
55
|
+
connectionState: z.enum(HOTEL_INTEGRATION_CONNECTION_STATE_VALUES),
|
|
56
|
+
lastHeartbeatAt: z.date(),
|
|
57
|
+
lastSeenAt: z.date(),
|
|
58
|
+
lastSyncStatus: z.enum(HOTEL_INTEGRATION_SYNC_STATUS_VALUES),
|
|
59
|
+
lastSyncAt: z.date().nullable(),
|
|
60
|
+
failedAt: z.date().nullable(),
|
|
61
|
+
metadata: z.record(z.string(), z.unknown()).optional(),
|
|
62
|
+
})
|
|
63
|
+
.extend(TimestampSchema.shape);
|
|
64
|
+
export type THotelIntegrationConnection = z.infer<typeof HotelIntegrationConnectionSchema>;
|
|
16
65
|
|
|
17
66
|
export const HotelIntegrationCredentialSchema = z
|
|
18
67
|
.object({
|
|
19
68
|
id: z.uuid(),
|
|
69
|
+
integrationId: z.uuid(),
|
|
20
70
|
provider: z.enum(HOTEL_INTEGRATION_PROVIDER_VALUES),
|
|
21
71
|
login: z.string().min(1),
|
|
22
72
|
encryptedSecret: z.string().min(1),
|
|
23
73
|
encryptionVersion: z.string().min(1),
|
|
74
|
+
status: z.enum(HOTEL_INTEGRATION_CREDENTIAL_STATUS_VALUES),
|
|
75
|
+
expiresAt: z.date().nullable(),
|
|
24
76
|
meta: z.record(z.string(), z.unknown()).optional(),
|
|
25
77
|
rotatedAt: z.date().nullable(),
|
|
26
78
|
})
|
|
27
79
|
.extend(TimestampSchema.shape);
|
|
28
|
-
|
|
29
80
|
export type THotelIntegrationCredential = z.infer<typeof HotelIntegrationCredentialSchema>;
|
|
@@ -3,7 +3,7 @@ import { createApi, TController } from '../../common/utils';
|
|
|
3
3
|
export const HOTEL_INTEGRATIONS_CONTROLLER = {
|
|
4
4
|
prefix: 'hotels/by-id/:hotelId/integrations',
|
|
5
5
|
endpoints: {
|
|
6
|
-
|
|
6
|
+
findAll: 'findAll',
|
|
7
7
|
findOne: ':integrationId',
|
|
8
8
|
create: '',
|
|
9
9
|
update: ':integrationId',
|
package/package.json
CHANGED
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
3
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
4
|
-
import {
|
|
4
|
+
import { PermissionWriteSchema, PermissionDetailSchema } from '../permission.models';
|
|
5
5
|
|
|
6
|
-
const CreatePermissionContractRequestSchema =
|
|
7
|
-
id: true,
|
|
8
|
-
createdAt: true,
|
|
9
|
-
updatedAt: true,
|
|
10
|
-
});
|
|
6
|
+
const CreatePermissionContractRequestSchema = PermissionWriteSchema;
|
|
11
7
|
|
|
12
8
|
export namespace CreatePermissionContract {
|
|
13
9
|
export const getUrl = PERMISSIONS_API.create;
|
|
@@ -17,6 +13,6 @@ export namespace CreatePermissionContract {
|
|
|
17
13
|
export const RequestSchema = CreatePermissionContractRequestSchema;
|
|
18
14
|
export type TRequest = z.infer<typeof RequestSchema>;
|
|
19
15
|
|
|
20
|
-
export const ResponseSchema =
|
|
16
|
+
export const ResponseSchema = PermissionDetailSchema;
|
|
21
17
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
22
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { PermissionDetailSchema } from '../permission.models';
|
|
4
4
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
5
|
|
|
6
6
|
export namespace FindPermissionContract {
|
|
@@ -8,6 +8,6 @@ export namespace FindPermissionContract {
|
|
|
8
8
|
export const endpoint = PERMISSIONS_CONTROLLER.endpoints.find;
|
|
9
9
|
export const httpMethod = HTTP_METHODS.get;
|
|
10
10
|
|
|
11
|
-
export const ResponseSchema =
|
|
11
|
+
export const ResponseSchema = PermissionDetailSchema;
|
|
12
12
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { PermissionDetailSchema } from '../permission.models';
|
|
4
4
|
import { PERMISSIONS_API, PERMISSIONS_CONTROLLER } from '../permissions.api';
|
|
5
5
|
import { CreatePermissionContract } from './create-permission.contract';
|
|
6
6
|
|
|
@@ -12,6 +12,6 @@ export namespace UpdatePermissionContract {
|
|
|
12
12
|
export const RequestSchema = CreatePermissionContract.RequestSchema;
|
|
13
13
|
export type TRequest = z.infer<typeof RequestSchema>;
|
|
14
14
|
|
|
15
|
-
export const ResponseSchema =
|
|
15
|
+
export const ResponseSchema = PermissionDetailSchema;
|
|
16
16
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
17
17
|
}
|
|
@@ -1,29 +1,35 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
import { AppAbility, TimestampSchema, makeTranslations } from '../common';
|
|
2
|
+
import { AppAbility, TimestampSchema, UuidSchema, makeTranslations } from '../common';
|
|
3
|
+
import { PermissionConditionFlagsSchema } from './permisson-conditions.model';
|
|
3
4
|
|
|
4
|
-
export const
|
|
5
|
-
.
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
conditions: z.json().optional().nullable(),
|
|
11
|
-
})
|
|
12
|
-
.extend(TimestampSchema.shape);
|
|
5
|
+
export const PermissionSchema = z.object({
|
|
6
|
+
action: z.enum(AppAbility.ACTION_VALUES),
|
|
7
|
+
subject: z.enum(AppAbility.SUBJECT_VALUES),
|
|
8
|
+
conditions: PermissionConditionFlagsSchema,
|
|
9
|
+
});
|
|
10
|
+
export type TPermission = z.infer<typeof PermissionSchema>;
|
|
13
11
|
|
|
12
|
+
export const PermissionPersistedSchema = PermissionSchema.extend({
|
|
13
|
+
id: UuidSchema,
|
|
14
|
+
...TimestampSchema.shape,
|
|
15
|
+
});
|
|
14
16
|
export type TPermissionPersisted = z.infer<typeof PermissionPersistedSchema>;
|
|
15
17
|
|
|
16
|
-
// V2 translations: all translatable fields are inside per-language translation object
|
|
17
18
|
export const PermissionTranslationsSchema = z.object({
|
|
18
19
|
name: z.string().min(3),
|
|
19
20
|
description: z.string().optional(),
|
|
20
21
|
});
|
|
21
22
|
export type TPermissionTranslations = z.infer<typeof PermissionTranslationsSchema>;
|
|
22
23
|
|
|
23
|
-
export const
|
|
24
|
+
export const PermissionWriteSchema = PermissionSchema.extend({
|
|
25
|
+
translations: makeTranslations(PermissionTranslationsSchema),
|
|
26
|
+
});
|
|
27
|
+
export type TPermissionWrite = z.infer<typeof PermissionWriteSchema>;
|
|
28
|
+
|
|
29
|
+
export const PermissionDetailSchema = PermissionPersistedSchema.extend({
|
|
24
30
|
translations: makeTranslations(PermissionTranslationsSchema),
|
|
25
31
|
});
|
|
26
|
-
export type
|
|
32
|
+
export type TPermissionDetail = z.infer<typeof PermissionDetailSchema>;
|
|
27
33
|
|
|
28
34
|
export const PermissionListItemSchema = PermissionPersistedSchema.extend({
|
|
29
35
|
name: z.string().nullable(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { RoleWriteSchema, RoleDetailSchema } from '../role.models';
|
|
4
4
|
import { ROLES_API, ROLES_CONTROLLER } from '../roles.api';
|
|
5
5
|
|
|
6
6
|
export namespace CreateRoleContract {
|
|
@@ -8,13 +8,9 @@ export namespace CreateRoleContract {
|
|
|
8
8
|
export const endpoint = ROLES_CONTROLLER.endpoints.create;
|
|
9
9
|
export const httpMethod = HTTP_METHODS.post;
|
|
10
10
|
|
|
11
|
-
export const RequestSchema =
|
|
12
|
-
id: true,
|
|
13
|
-
createdAt: true,
|
|
14
|
-
updatedAt: true,
|
|
15
|
-
});
|
|
11
|
+
export const RequestSchema = RoleWriteSchema;
|
|
16
12
|
export type TRequest = z.infer<typeof RequestSchema>;
|
|
17
13
|
|
|
18
|
-
export const ResponseSchema =
|
|
14
|
+
export const ResponseSchema = RoleDetailSchema;
|
|
19
15
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
20
16
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { RoleDetailSchema } from '../role.models';
|
|
4
4
|
import { ROLES_API, ROLES_CONTROLLER } from '../roles.api';
|
|
5
5
|
|
|
6
6
|
export namespace FindRoleContract {
|
|
@@ -8,6 +8,6 @@ export namespace FindRoleContract {
|
|
|
8
8
|
export const endpoint = ROLES_CONTROLLER.endpoints.find;
|
|
9
9
|
export const httpMethod = HTTP_METHODS.get;
|
|
10
10
|
|
|
11
|
-
export const ResponseSchema =
|
|
11
|
+
export const ResponseSchema = RoleDetailSchema;
|
|
12
12
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
13
13
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
2
|
import { HTTP_METHODS } from '../../common';
|
|
3
|
-
import {
|
|
3
|
+
import { RoleDetailSchema } from '../role.models';
|
|
4
4
|
import { ROLES_API, ROLES_CONTROLLER } from '../roles.api';
|
|
5
5
|
import { CreateRoleContract } from './create-role.contract';
|
|
6
6
|
|
|
@@ -12,6 +12,6 @@ export namespace UpdateRoleContract {
|
|
|
12
12
|
export const RequestSchema = CreateRoleContract.RequestSchema;
|
|
13
13
|
export type TRequest = z.infer<typeof RequestSchema>;
|
|
14
14
|
|
|
15
|
-
export const ResponseSchema =
|
|
15
|
+
export const ResponseSchema = RoleDetailSchema;
|
|
16
16
|
export type TResponse = z.infer<typeof ResponseSchema>;
|
|
17
17
|
}
|
package/roles/role.models.ts
CHANGED
|
@@ -1,21 +1,25 @@
|
|
|
1
1
|
import * as z from 'zod';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
ROLE_TYPE_VALUES,
|
|
4
|
+
TimestampSchema,
|
|
5
|
+
UuidArraySchema,
|
|
6
|
+
UuidSchema,
|
|
7
|
+
makeTranslations,
|
|
8
|
+
} from '../common';
|
|
3
9
|
import { PermissionListItemSchema } from '../permissions';
|
|
4
10
|
|
|
5
|
-
export const
|
|
6
|
-
.
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
})
|
|
12
|
-
.extend(TimestampSchema.shape);
|
|
13
|
-
export type TRolePersisted = z.infer<typeof RolePersistedSchema>;
|
|
11
|
+
export const RoleSchema = z.object({
|
|
12
|
+
type: z.enum(ROLE_TYPE_VALUES),
|
|
13
|
+
isActive: z.boolean().optional(),
|
|
14
|
+
isDefault: z.boolean().optional(),
|
|
15
|
+
});
|
|
16
|
+
export type TRole = z.infer<typeof RoleSchema>;
|
|
14
17
|
|
|
15
|
-
export const
|
|
16
|
-
|
|
18
|
+
export const RolePersistedSchema = RoleSchema.required({ isActive: true, isDefault: true }).extend({
|
|
19
|
+
id: UuidSchema,
|
|
20
|
+
...TimestampSchema.shape,
|
|
17
21
|
});
|
|
18
|
-
export type
|
|
22
|
+
export type TRolePersisted = z.infer<typeof RolePersistedSchema>;
|
|
19
23
|
|
|
20
24
|
export const RoleTranslationsSchema = z.object({
|
|
21
25
|
name: z.string().min(3),
|
|
@@ -23,10 +27,17 @@ export const RoleTranslationsSchema = z.object({
|
|
|
23
27
|
});
|
|
24
28
|
export type TRoleTranslations = z.infer<typeof RoleTranslationsSchema>;
|
|
25
29
|
|
|
26
|
-
export const
|
|
30
|
+
export const RoleWriteSchema = RoleSchema.extend({
|
|
27
31
|
translations: makeTranslations(RoleTranslationsSchema),
|
|
32
|
+
permissionIds: UuidArraySchema.optional(),
|
|
33
|
+
});
|
|
34
|
+
export type TRoleWrite = z.infer<typeof RoleWriteSchema>;
|
|
35
|
+
|
|
36
|
+
export const RoleDetailSchema = RolePersistedSchema.extend({
|
|
37
|
+
translations: makeTranslations(RoleTranslationsSchema),
|
|
38
|
+
permissionIds: UuidArraySchema.optional(),
|
|
28
39
|
});
|
|
29
|
-
export type
|
|
40
|
+
export type TRoleDetail = z.infer<typeof RoleDetailSchema>;
|
|
30
41
|
|
|
31
42
|
export const RoleListItemSchema = RolePersistedSchema.extend({
|
|
32
43
|
name: z.string().nullable(),
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FindHotelDomainSettingsContract = void 0;
|
|
4
|
-
const common_1 = require("../../../common");
|
|
5
|
-
const hotel_domain_settings_api_1 = require("../hotel-domain-settings.api");
|
|
6
|
-
const hotel_domain_settings_schema_1 = require("../hotel-domain-settings.schema");
|
|
7
|
-
var FindHotelDomainSettingsContract;
|
|
8
|
-
(function (FindHotelDomainSettingsContract) {
|
|
9
|
-
FindHotelDomainSettingsContract.getUrl = hotel_domain_settings_api_1.HOTEL_DOMAIN_SETTINGS_API.find;
|
|
10
|
-
FindHotelDomainSettingsContract.endpoint = hotel_domain_settings_api_1.HOTEL_DOMAIN_SETTINGS_CONTROLLER.endpoints.find;
|
|
11
|
-
FindHotelDomainSettingsContract.httpMethod = common_1.HTTP_METHODS.get;
|
|
12
|
-
FindHotelDomainSettingsContract.ResponseSchema = hotel_domain_settings_schema_1.HotelDomainSettingsListSchema;
|
|
13
|
-
})(FindHotelDomainSettingsContract || (exports.FindHotelDomainSettingsContract = FindHotelDomainSettingsContract = {}));
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UpdateHotelDomainSettingsContract = void 0;
|
|
4
|
-
const common_1 = require("../../../common");
|
|
5
|
-
const hotel_domain_settings_api_1 = require("../hotel-domain-settings.api");
|
|
6
|
-
const hotel_domain_settings_schema_1 = require("../hotel-domain-settings.schema");
|
|
7
|
-
var UpdateHotelDomainSettingsContract;
|
|
8
|
-
(function (UpdateHotelDomainSettingsContract) {
|
|
9
|
-
UpdateHotelDomainSettingsContract.getUrl = hotel_domain_settings_api_1.HOTEL_DOMAIN_SETTINGS_API.update;
|
|
10
|
-
UpdateHotelDomainSettingsContract.endpoint = hotel_domain_settings_api_1.HOTEL_DOMAIN_SETTINGS_CONTROLLER.endpoints.update;
|
|
11
|
-
UpdateHotelDomainSettingsContract.httpMethod = common_1.HTTP_METHODS.put;
|
|
12
|
-
UpdateHotelDomainSettingsContract.RequestSchema = hotel_domain_settings_schema_1.HotelDomainSettingsSchema;
|
|
13
|
-
UpdateHotelDomainSettingsContract.ResponseSchema = hotel_domain_settings_schema_1.HotelDomainSettingsPersistedSchema;
|
|
14
|
-
})(UpdateHotelDomainSettingsContract || (exports.UpdateHotelDomainSettingsContract = UpdateHotelDomainSettingsContract = {}));
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HOTEL_DOMAIN_SETTINGS_API = exports.HOTEL_DOMAIN_SETTINGS_CONTROLLER = void 0;
|
|
4
|
-
const utils_1 = require("../../common/utils");
|
|
5
|
-
exports.HOTEL_DOMAIN_SETTINGS_CONTROLLER = {
|
|
6
|
-
prefix: 'hotels/by-id/:hotelId/settings/domains',
|
|
7
|
-
endpoints: {
|
|
8
|
-
find: '',
|
|
9
|
-
update: '',
|
|
10
|
-
},
|
|
11
|
-
};
|
|
12
|
-
exports.HOTEL_DOMAIN_SETTINGS_API = (0, utils_1.createApi)(exports.HOTEL_DOMAIN_SETTINGS_CONTROLLER);
|