From 79f67e2550b853cf47857ff5916cd1a6835e631a Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 20 Mar 2024 17:36:39 +0100 Subject: [PATCH 1/5] feat: add item packed --- src/item/packedItem.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/item/packedItem.ts diff --git a/src/item/packedItem.ts b/src/item/packedItem.ts new file mode 100644 index 00000000..d24f85f3 --- /dev/null +++ b/src/item/packedItem.ts @@ -0,0 +1,11 @@ +import { ItemMembership } from '../itemMembership/itemMembership.js'; +import { DiscriminatedItem } from './item.js'; +import { ItemSettings } from './itemSettings.js'; + +/** + * This type is used to define an item with more data such as: + * - permission + */ +export type PackedItem = DiscriminatedItem & { + permission: ItemMembership['permission']; +}; From b3f518ca90ffc4906aafec506bf24d788c036b0e Mon Sep 17 00:00:00 2001 From: kim Date: Wed, 20 Mar 2024 17:39:21 +0100 Subject: [PATCH 2/5] refactor: export packed item --- src/index.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/index.ts b/src/index.ts index 86f50cc9..6ef7ac1a 100644 --- a/src/index.ts +++ b/src/index.ts @@ -109,6 +109,7 @@ export * from './enums/descriptionPlacement.js'; * Item */ export { type DiscriminatedItem, getMimetype } from './item/item.js'; +export { type PackedItem } from './item/packedItem.js'; export * from './item/itemType.js'; export * from './item/itemUtils.js'; /** From fb0940c9066b02b9a872ec923c6c14366d0fdc89 Mon Sep 17 00:00:00 2001 From: kim Date: Thu, 21 Mar 2024 16:49:46 +0100 Subject: [PATCH 3/5] refactor: item geoloc packed --- src/itemGeolocation/itemGeolocation.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/itemGeolocation/itemGeolocation.ts b/src/itemGeolocation/itemGeolocation.ts index 605591a5..4f53a241 100644 --- a/src/itemGeolocation/itemGeolocation.ts +++ b/src/itemGeolocation/itemGeolocation.ts @@ -1,11 +1,11 @@ -import { DiscriminatedItem } from '@/item/item.js'; +import { PackedItem } from '@/item/packedItem.js'; import { UUID } from '@/types.js'; export type ItemGeolocation = { id: UUID; lat: number; lng: number; - item: DiscriminatedItem; + item: PackedItem; country: string | null; addressLabel: string | null; helperLabel: string | null; From df0ec74373227068d8502d456b81783e883ebd90 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 22 Mar 2024 09:21:17 +0100 Subject: [PATCH 4/5] feat: add packed factories --- src/item/appItem/appItem.factory.ts | 16 ++++++++++ src/item/documentItem/documentItem.factory.ts | 16 ++++++++++ src/item/etherpadItem/etherpadItem.factory.ts | 16 ++++++++++ src/item/factory.ts | 4 +++ src/item/fileItem/fileItem.factory.ts | 30 +++++++++++++++++++ src/item/folderItem/folderItem.factory.ts | 17 +++++++++++ src/item/h5pItem/h5pItem.factory.ts | 17 +++++++++++ src/item/linkItem/linkItem.factory.ts | 17 +++++++++++ src/item/packedItem.ts | 9 ++++-- src/item/shortcutItem/shortcutItem.factory.ts | 17 +++++++++++ src/itemMembership/factory.ts | 18 +++++++++++ 11 files changed, 174 insertions(+), 3 deletions(-) create mode 100644 src/itemMembership/factory.ts diff --git a/src/item/appItem/appItem.factory.ts b/src/item/appItem/appItem.factory.ts index b7e58309..293cd68c 100644 --- a/src/item/appItem/appItem.factory.ts +++ b/src/item/appItem/appItem.factory.ts @@ -4,7 +4,9 @@ import { PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { AppItemType } from './appItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const AppItemFactory = ( @@ -22,3 +24,17 @@ export const AppItemFactory = ( }, }; }; + +export const PackedAppItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial, +): ItemFactoryOutputType => { + const newItem = AppItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/documentItem/documentItem.factory.ts b/src/item/documentItem/documentItem.factory.ts index 1dd2e878..e3a2bf26 100644 --- a/src/item/documentItem/documentItem.factory.ts +++ b/src/item/documentItem/documentItem.factory.ts @@ -4,7 +4,9 @@ import { PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { DocumentItemType } from './documentItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const DocumentItemFactory = ( @@ -23,3 +25,17 @@ export const DocumentItemFactory = ( }, }; }; + +export const PackedDocumentItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial, +): ItemFactoryOutputType => { + const newItem = DocumentItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/etherpadItem/etherpadItem.factory.ts b/src/item/etherpadItem/etherpadItem.factory.ts index 7d8319cc..2f6c169c 100644 --- a/src/item/etherpadItem/etherpadItem.factory.ts +++ b/src/item/etherpadItem/etherpadItem.factory.ts @@ -4,7 +4,9 @@ import { PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { EtherpadItemType } from './etherpadItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const EtherpadItemFactory = ( @@ -24,3 +26,17 @@ export const EtherpadItemFactory = ( }, }; }; + +export const PackedEtherpadItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial, +): ItemFactoryOutputType => { + const newItem = EtherpadItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/factory.ts b/src/item/factory.ts index c279497b..9cfd784b 100644 --- a/src/item/factory.ts +++ b/src/item/factory.ts @@ -1,6 +1,7 @@ import { MemberFactory } from '../member/factory.js'; import { DiscriminatedItem } from './item.js'; import { buildPathFromIds } from './itemUtils.js'; +import { PackedInformation } from './packedItem.js'; import { CCLicenseAdaptions } from '@/enums/ccLicenses.js'; import { faker } from '@faker-js/faker'; @@ -19,6 +20,9 @@ export type ItemFactoryOutputType = Pick< | 'updatedAt' >; +export type PackedItemFactoryOutputType = + ItemFactoryOutputType & PackedInformation; + export type ItemFactoryInputType = Partial & { parentItem?: Pick; }; diff --git a/src/item/fileItem/fileItem.factory.ts b/src/item/fileItem/fileItem.factory.ts index 84ecc1db..fbb7ad95 100644 --- a/src/item/fileItem/fileItem.factory.ts +++ b/src/item/fileItem/fileItem.factory.ts @@ -4,7 +4,9 @@ import { PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { LocalFileItemType, S3FileItemType } from './fileItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const LocalFileItemFactory = ( @@ -29,6 +31,20 @@ export const LocalFileItemFactory = ( }; }; +export const PackedLocalFileItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial, +): ItemFactoryOutputType => { + const newItem = LocalFileItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; + export const S3FileItemFactory = ( item: ItemFactoryInputType = {}, ): ItemFactoryOutputType => { @@ -50,3 +66,17 @@ export const S3FileItemFactory = ( }, }; }; + +export const PackedS3FileItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial, +): ItemFactoryOutputType => { + const newItem = S3FileItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/folderItem/folderItem.factory.ts b/src/item/folderItem/folderItem.factory.ts index 1aaceb54..4b26f924 100644 --- a/src/item/folderItem/folderItem.factory.ts +++ b/src/item/folderItem/folderItem.factory.ts @@ -1,10 +1,13 @@ import { ItemFactoryInputType, ItemFactoryOutputType, + PackedItemFactoryOutputType, PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { FolderItemType } from './folderItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; export const FolderItemFactory = ( item: ItemFactoryInputType = {}, @@ -20,3 +23,17 @@ export const FolderItemFactory = ( }, }; }; + +export const PackedFolderItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial = {}, +): PackedItemFactoryOutputType => { + const newItem = FolderItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/h5pItem/h5pItem.factory.ts b/src/item/h5pItem/h5pItem.factory.ts index f50d923e..ebb2398e 100644 --- a/src/item/h5pItem/h5pItem.factory.ts +++ b/src/item/h5pItem/h5pItem.factory.ts @@ -1,10 +1,13 @@ import { ItemFactoryInputType, ItemFactoryOutputType, + PackedItemFactoryOutputType, PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { H5PItemType } from './h5pItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const H5PItemFactory = ( @@ -25,3 +28,17 @@ export const H5PItemFactory = ( }, }; }; + +export const PackedH5PItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial = {}, +): PackedItemFactoryOutputType => { + const newItem = H5PItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/linkItem/linkItem.factory.ts b/src/item/linkItem/linkItem.factory.ts index ae5b8f7c..4d4a8e04 100644 --- a/src/item/linkItem/linkItem.factory.ts +++ b/src/item/linkItem/linkItem.factory.ts @@ -1,10 +1,13 @@ import { ItemFactoryInputType, ItemFactoryOutputType, + PackedItemFactoryOutputType, PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { LinkItemType } from './linkItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const LinkItemFactory = ( @@ -32,3 +35,17 @@ export const LinkItemFactory = ( }, }; }; + +export const PackedLinkItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial = {}, +): PackedItemFactoryOutputType => { + const newItem = LinkItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/item/packedItem.ts b/src/item/packedItem.ts index d24f85f3..bd212556 100644 --- a/src/item/packedItem.ts +++ b/src/item/packedItem.ts @@ -2,10 +2,13 @@ import { ItemMembership } from '../itemMembership/itemMembership.js'; import { DiscriminatedItem } from './item.js'; import { ItemSettings } from './itemSettings.js'; +export type PackedInformation = { + permission: ItemMembership['permission']; +}; + /** * This type is used to define an item with more data such as: * - permission */ -export type PackedItem = DiscriminatedItem & { - permission: ItemMembership['permission']; -}; +export type PackedItem = DiscriminatedItem & + PackedInformation; diff --git a/src/item/shortcutItem/shortcutItem.factory.ts b/src/item/shortcutItem/shortcutItem.factory.ts index 6a41772d..3bf107c7 100644 --- a/src/item/shortcutItem/shortcutItem.factory.ts +++ b/src/item/shortcutItem/shortcutItem.factory.ts @@ -1,10 +1,13 @@ import { ItemFactoryInputType, ItemFactoryOutputType, + PackedItemFactoryOutputType, PartialItemFactory, } from '../factory.js'; import { ItemType } from '../itemType.js'; +import { PackedInformation } from '../packedItem.js'; import { ShortcutItemType } from './shortcutItem.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; import { faker } from '@faker-js/faker'; export const ShortcutItemFactory = ( @@ -23,3 +26,17 @@ export const ShortcutItemFactory = ( }, }; }; + +export const PackedShortcutItemFactory = ( + item: ItemFactoryInputType = {}, + packedInfo: Partial = {}, +): PackedItemFactoryOutputType => { + const newItem = ShortcutItemFactory(item); + return { + ...newItem, + + // default packed info + permission: PermissionLevel.Admin, + ...packedInfo, + }; +}; diff --git a/src/itemMembership/factory.ts b/src/itemMembership/factory.ts new file mode 100644 index 00000000..908fedc6 --- /dev/null +++ b/src/itemMembership/factory.ts @@ -0,0 +1,18 @@ +import { ItemMembership } from './itemMembership.js'; +import { PermissionLevel } from '@/enums/permissionLevel/permissionLevel.js'; +import { FolderItemFactory } from '@/item/folderItem/folderItem.factory.js'; +import { MemberFactory } from '@/member/factory.js'; +import { faker } from '@faker-js/faker'; + +export const ItemMembershipFactory = ( + im: Partial & Pick = { + item: FolderItemFactory(), + }, +): ItemMembership => ({ + id: faker.string.uuid(), + createdAt: faker.date.anytime().toISOString(), + updatedAt: faker.date.anytime().toISOString(), + member: MemberFactory(im.member), + permission: faker.helpers.enumValue(PermissionLevel), + ...im, +}); From b75dcdf6bd46a7d509b8b483ca2add3fed042d63 Mon Sep 17 00:00:00 2001 From: kim Date: Fri, 22 Mar 2024 11:59:58 +0100 Subject: [PATCH 5/5] refactor: fix packed permission --- src/item/packedItem.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/item/packedItem.ts b/src/item/packedItem.ts index bd212556..4e152910 100644 --- a/src/item/packedItem.ts +++ b/src/item/packedItem.ts @@ -3,7 +3,7 @@ import { DiscriminatedItem } from './item.js'; import { ItemSettings } from './itemSettings.js'; export type PackedInformation = { - permission: ItemMembership['permission']; + permission: ItemMembership['permission'] | null; }; /**