1- import type {
2- AppItemExtra ,
3- DocumentItemExtra ,
4- EtherpadItemExtra ,
5- FileItemExtra ,
6- FolderItemExtra ,
7- H5PItemExtra ,
8- ItemSettings ,
9- LinkItemExtra ,
10- LinkItemSettings ,
11- ShortcutItemExtra ,
12- } from '@graasp/sdk' ;
13-
1+ import type { ItemRaw } from '../services/item/item' ;
142import type { MinimalGuest , MinimalMember } from '../types' ;
153import {
164 accountsTable ,
@@ -35,7 +23,6 @@ import {
3523 itemValidationReviewsTable ,
3624 itemValidationsTable ,
3725 itemVisibilitiesTable ,
38- items ,
3926 itemsRawTable ,
4027 memberProfilesTable ,
4128 membersView ,
@@ -77,57 +64,11 @@ export type MemberRaw = Omit<typeof membersView.$inferSelect, 'type'> & {
7764 */
7865export type ItemInsertDTO = typeof itemsRawTable . $inferInsert ;
7966
80- /**
81- * Raw return type given when retrieveing from the db.
82- */
83- export type ItemRaw = typeof items . $inferSelect ;
84-
8567export type NullableItem = ItemRaw | null ;
8668
87- export type ItemLoginSchemaRaw = typeof itemLoginSchemasTable . $inferSelect ;
88- export type ItemLoginSchemaWithItem = ItemLoginSchemaRaw & { item : ItemRaw } ;
89- export type GuestInsertDTO = typeof accountsTable . $inferInsert ;
90- export type GuestRaw = Omit < typeof guestsView . $inferSelect , 'type' > & {
91- type : 'guest' ;
92- } ;
93- export type GuestWithItemLoginSchema = GuestRaw & {
94- itemLoginSchema : ItemLoginSchemaRaw | null ;
95- } ;
96-
97- export type ItemExtraMap = {
98- [ 'app' ] : AppItemExtra ;
99- [ 'document' ] : DocumentItemExtra ;
100- [ 'etherpad' ] : EtherpadItemExtra ;
101- [ 'folder' ] : FolderItemExtra ;
102- [ 'h5p' ] : H5PItemExtra ;
103- [ 'embeddedLink' ] : LinkItemExtra ;
104- [ 'file' ] : FileItemExtra ;
105- [ 'shortcut' ] : ShortcutItemExtra ;
106- [ 'page' ] : never ;
107- } ;
108-
109- export type ItemSettingsMap = {
110- [ 'app' ] : ItemSettings ;
111- [ 'document' ] : ItemSettings ;
112- [ 'etherpad' ] : ItemSettings ;
113- [ 'folder' ] : ItemSettings ;
114- [ 'h5p' ] : ItemSettings ;
115- [ 'embeddedLink' ] : LinkItemSettings ;
116- [ 'file' ] : ItemSettings ;
117- [ 'shortcut' ] : ItemSettings ;
118- [ 'page' ] : ItemSettings ;
119- } ;
120-
121- // local type alias to simplify the notation
122- export type ItemTypeEnumKeys = keyof ItemExtraMap ;
123-
124- export type ItemWithType < T extends ItemTypeEnumKeys > = ItemRaw & {
125- extra : ItemExtraMap [ T ] ;
126- settings : ItemSettingsMap [ T ] ;
127- } ;
12869// note: cannot combine nicely Item and ItemWithCreator when defined with omit
12970// export type ItemWithCreator = Omit<Item, 'creatorId'> & { creator: MinimalAccount };
130- export type ItemWithCreator = ItemRaw & { creator : MemberRaw | null } ;
71+ export type ItemWithCreator = ItemRaw & { creator : NullableAccount } ;
13172
13273// item created by the server with necessary properties
13374export type MinimalItemForInsert = {
@@ -140,6 +81,16 @@ export type MinimalItemForInsert = {
14081 order ?: ItemRaw [ 'order' ] ;
14182} ;
14283
84+ export type ItemLoginSchemaRaw = typeof itemLoginSchemasTable . $inferSelect ;
85+ export type ItemLoginSchemaWithItem = ItemLoginSchemaRaw & { item : ItemRaw } ;
86+ export type GuestInsertDTO = typeof accountsTable . $inferInsert ;
87+ export type GuestRaw = Omit < typeof guestsView . $inferSelect , 'type' > & {
88+ type : 'guest' ;
89+ } ;
90+ export type GuestWithItemLoginSchema = GuestRaw & {
91+ itemLoginSchema : ItemLoginSchemaRaw | null ;
92+ } ;
93+
14394// --- ItemVisibilities
14495export type ItemVisibilityRaw = typeof itemVisibilitiesTable . $inferSelect ;
14596export type ItemVisibilityWithItem = ItemVisibilityRaw & {
0 commit comments