diff --git a/backend/src/database/types/alias.ts b/backend/src/database/types/alias.ts index f58cc3631..1091a1d6d 100644 --- a/backend/src/database/types/alias.ts +++ b/backend/src/database/types/alias.ts @@ -28,3 +28,5 @@ export enum FieldNameAlias { } export const TableAlias = 'alias'; + +export type TypeUpdateAlias = Pick; diff --git a/backend/src/database/types/api-token.ts b/backend/src/database/types/api-token.ts index 1deb30165..72ff8784d 100644 --- a/backend/src/database/types/api-token.ts +++ b/backend/src/database/types/api-token.ts @@ -39,3 +39,6 @@ export enum FieldNameApiToken { } export const TableApiToken = 'api_token'; + +export type TypeInsertApiToken = Omit; +export type TypeUpdateApiToken = Pick; diff --git a/backend/src/database/types/group.ts b/backend/src/database/types/group.ts index 6e178496a..585881d02 100644 --- a/backend/src/database/types/group.ts +++ b/backend/src/database/types/group.ts @@ -31,3 +31,8 @@ export enum FieldNameGroup { } export const TableGroup = 'group'; +export type TypeInsertGroup = Omit; +export type TypeUpdateGroup = Pick< + Group, + FieldNameGroup.name | FieldNameGroup.displayName +>; diff --git a/backend/src/database/types/identity.ts b/backend/src/database/types/identity.ts index a3802c1e5..88c19b3bf 100644 --- a/backend/src/database/types/identity.ts +++ b/backend/src/database/types/identity.ts @@ -42,3 +42,12 @@ export enum FieldNameIdentity { } export const TableIdentity = 'identity'; + +export type TypeInsertIdentity = Omit< + Identity, + FieldNameIdentity.createdAt | FieldNameIdentity.updatedAt +>; +export type TypeUpdateIdentity = Pick< + Identity, + FieldNameIdentity.passwordHash | FieldNameIdentity.updatedAt +>; diff --git a/backend/src/database/types/knex.types.ts b/backend/src/database/types/knex.types.ts index 9bb8c7534..89b75137e 100644 --- a/backend/src/database/types/knex.types.ts +++ b/backend/src/database/types/knex.types.ts @@ -5,28 +5,13 @@ */ import { Knex } from 'knex'; +import { Alias, TypeUpdateAlias } from './alias'; +import { ApiToken, TypeInsertApiToken, TypeUpdateApiToken } from './api-token'; +import { Group, TypeInsertGroup, TypeUpdateGroup } from './group'; +import { Identity, TypeInsertIdentity, TypeUpdateIdentity } from './identity'; import { - Alias, - ApiToken, AuthorshipInfo, - FieldNameAlias, - FieldNameApiToken, - FieldNameGroup, - FieldNameIdentity, - FieldNameMediaUpload, - FieldNameNote, - FieldNameNoteGroupPermission, - FieldNameNoteUserPermission, - FieldNameRevision, - FieldNameUser, - Group, GroupUser, - Identity, - MediaUpload, - Note, - NoteGroupPermission, - NoteUserPermission, - Revision, RevisionTag, TableAlias, TableApiToken, @@ -42,77 +27,65 @@ import { TableRevisionTag, TableUser, TableUserPinnedNote, - User, UserPinnedNote, } from './index'; +import { + MediaUpload, + TypeInsertMediaUpload, + TypeUpdateMediaUpload, +} from './media-upload'; +import { Note, TypeInsertNote, TypeUpdateNote } from './note'; +import { + NoteGroupPermission, + TypeUpdateNoteGroupPermission, +} from './note-group-permission'; +import { + NoteUserPermission, + TypeUpdateNoteUserPermission, +} from './note-user-permission'; +import { Revision, TypeInsertRevision } from './revision'; +import { TypeInsertUser, TypeUpdateUser, User } from './user'; /* eslint-disable @typescript-eslint/naming-convention */ declare module 'knex/types/tables.js' { interface Tables { - [TableAlias]: Knex.CompositeTableType< - Alias, - Alias, - Pick - >; + [TableAlias]: Knex.CompositeTableType; [TableApiToken]: Knex.CompositeTableType< ApiToken, - Omit, - Pick + TypeInsertApiToken, + TypeUpdateApiToken >; [TableAuthorshipInfo]: AuthorshipInfo; [TableGroup]: Knex.CompositeTableType< Group, - Omit, - Pick + TypeInsertGroup, + TypeUpdateGroup >; [TableGroupUser]: GroupUser; [TableIdentity]: Knex.CompositeTableType< Identity, - Omit, - Pick< - Identity, - FieldNameIdentity.passwordHash | FieldNameIdentity.updatedAt - > + TypeInsertIdentity, + TypeUpdateIdentity >; [TableMediaUpload]: Knex.CompositeTableType< MediaUpload, - Omit< - MediaUpload, - FieldNameMediaUpload.createdAt | FieldNameMediaUpload.uuid - >, - Pick - >; - [TableNote]: Knex.CompositeTableType< - Note, - Omit, - Pick + TypeInsertMediaUpload, + TypeUpdateMediaUpload >; + [TableNote]: Knex.CompositeTableType; [TableNoteGroupPermission]: Knex.CompositeTableType< NoteGroupPermission, NoteGroupPermission, - Pick + TypeUpdateNoteGroupPermission >; [TableNoteUserPermission]: Knex.CompositeTableType< NoteUserPermission, NoteUserPermission, - Pick - >; - [TableRevision]: Knex.CompositeTableType< - Revision, - Omit + TypeUpdateNoteUserPermission >; + [TableRevision]: Knex.CompositeTableType; [TableRevisionTag]: RevisionTag; - [TableUser]: Knex.CompositeTableType< - User, - Omit, - Pick< - User, - | FieldNameUser.displayName - | FieldNameUser.photoUrl - | FieldNameUser.email - | FieldNameUser.authorStyle - > - >; + [TableUser]: Knex.CompositeTableType; [TableUserPinnedNote]: UserPinnedNote; } } diff --git a/backend/src/database/types/media-upload.ts b/backend/src/database/types/media-upload.ts index 01eeba071..d0e37f2e0 100644 --- a/backend/src/database/types/media-upload.ts +++ b/backend/src/database/types/media-upload.ts @@ -44,3 +44,12 @@ export enum FieldNameMediaUpload { } export const TableMediaUpload = 'media_upload'; + +export type TypeInsertMediaUpload = Omit< + MediaUpload, + FieldNameMediaUpload.createdAt | FieldNameMediaUpload.uuid +>; +export type TypeUpdateMediaUpload = Pick< + MediaUpload, + FieldNameMediaUpload.noteId +>; diff --git a/backend/src/database/types/note-group-permission.ts b/backend/src/database/types/note-group-permission.ts index 53c98465b..7e817e7fd 100644 --- a/backend/src/database/types/note-group-permission.ts +++ b/backend/src/database/types/note-group-permission.ts @@ -24,3 +24,8 @@ export enum FieldNameNoteGroupPermission { } export const TableNoteGroupPermission = 'note_group_permission'; + +export type TypeUpdateNoteGroupPermission = Pick< + NoteGroupPermission, + FieldNameNoteGroupPermission.canEdit +>; diff --git a/backend/src/database/types/note-user-permission.ts b/backend/src/database/types/note-user-permission.ts index 7bf03325d..61ec8cd76 100644 --- a/backend/src/database/types/note-user-permission.ts +++ b/backend/src/database/types/note-user-permission.ts @@ -24,3 +24,8 @@ export enum FieldNameNoteUserPermission { } export const TableNoteUserPermission = 'note_user_permission'; + +export type TypeUpdateNoteUserPermission = Pick< + NoteUserPermission, + FieldNameNoteUserPermission.canEdit +>; diff --git a/backend/src/database/types/note.ts b/backend/src/database/types/note.ts index 898de1b08..dc9fdef98 100644 --- a/backend/src/database/types/note.ts +++ b/backend/src/database/types/note.ts @@ -31,3 +31,9 @@ export enum FieldNameNote { } export const TableNote = 'note'; + +export type TypeInsertNote = Omit< + Note, + FieldNameNote.createdAt | FieldNameNote.id +>; +export type TypeUpdateNote = Pick; diff --git a/backend/src/database/types/revision.ts b/backend/src/database/types/revision.ts index 73eadec6f..9e56af0b3 100644 --- a/backend/src/database/types/revision.ts +++ b/backend/src/database/types/revision.ts @@ -50,3 +50,8 @@ export enum FieldNameRevision { } export const TableRevision = 'revision'; + +export type TypeInsertRevision = Omit< + Revision, + FieldNameRevision.createdAt | FieldNameRevision.id +>; diff --git a/backend/src/database/types/user.ts b/backend/src/database/types/user.ts index 18fbfd36f..d545071f8 100644 --- a/backend/src/database/types/user.ts +++ b/backend/src/database/types/user.ts @@ -42,7 +42,7 @@ export interface User { [FieldNameUser.authorStyle]: number; } -export enum FieldNameUser { +export const enum FieldNameUser { id = 'id', username = 'username', guestUuid = 'guest_uuid', @@ -54,3 +54,15 @@ export enum FieldNameUser { } export const TableUser = 'user'; + +export type TypeInsertUser = Omit< + User, + FieldNameUser.id | FieldNameUser.createdAt +>; +export type TypeUpdateUser = Pick< + User, + | FieldNameUser.displayName + | FieldNameUser.photoUrl + | FieldNameUser.email + | FieldNameUser.authorStyle +>;