mirror of
https://github.com/hedgedoc/hedgedoc.git
synced 2025-05-18 17:25:16 -04:00
refactor(knex): export partial types for insert and update
We need these types when crafting objects to be passed into knex's .insert() and .update() methods. Signed-off-by: Erik Michelson <github@erik.michelson.eu>
This commit is contained in:
parent
4790705f0d
commit
6e151c8a1b
11 changed files with 96 additions and 62 deletions
|
@ -28,3 +28,5 @@ export enum FieldNameAlias {
|
|||
}
|
||||
|
||||
export const TableAlias = 'alias';
|
||||
|
||||
export type TypeUpdateAlias = Pick<Alias, FieldNameAlias.isPrimary>;
|
||||
|
|
|
@ -39,3 +39,6 @@ export enum FieldNameApiToken {
|
|||
}
|
||||
|
||||
export const TableApiToken = 'api_token';
|
||||
|
||||
export type TypeInsertApiToken = Omit<ApiToken, FieldNameApiToken.lastUsedAt>;
|
||||
export type TypeUpdateApiToken = Pick<ApiToken, FieldNameApiToken.lastUsedAt>;
|
||||
|
|
|
@ -31,3 +31,8 @@ export enum FieldNameGroup {
|
|||
}
|
||||
|
||||
export const TableGroup = 'group';
|
||||
export type TypeInsertGroup = Omit<Group, FieldNameGroup.id>;
|
||||
export type TypeUpdateGroup = Pick<
|
||||
Group,
|
||||
FieldNameGroup.name | FieldNameGroup.displayName
|
||||
>;
|
||||
|
|
|
@ -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
|
||||
>;
|
||||
|
|
|
@ -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<Alias, FieldNameAlias.isPrimary>
|
||||
>;
|
||||
[TableAlias]: Knex.CompositeTableType<Alias, Alias, TypeUpdateAlias>;
|
||||
[TableApiToken]: Knex.CompositeTableType<
|
||||
ApiToken,
|
||||
Omit<ApiToken, FieldNameApiToken.lastUsedAt>,
|
||||
Pick<ApiToken, FieldNameApiToken.lastUsedAt>
|
||||
TypeInsertApiToken,
|
||||
TypeUpdateApiToken
|
||||
>;
|
||||
[TableAuthorshipInfo]: AuthorshipInfo;
|
||||
[TableGroup]: Knex.CompositeTableType<
|
||||
Group,
|
||||
Omit<Group, FieldNameGroup.id>,
|
||||
Pick<Group, FieldNameGroup.name | FieldNameGroup.displayName>
|
||||
TypeInsertGroup,
|
||||
TypeUpdateGroup
|
||||
>;
|
||||
[TableGroupUser]: GroupUser;
|
||||
[TableIdentity]: Knex.CompositeTableType<
|
||||
Identity,
|
||||
Omit<Identity, FieldNameIdentity.createdAt | FieldNameIdentity.updatedAt>,
|
||||
Pick<
|
||||
Identity,
|
||||
FieldNameIdentity.passwordHash | FieldNameIdentity.updatedAt
|
||||
>
|
||||
TypeInsertIdentity,
|
||||
TypeUpdateIdentity
|
||||
>;
|
||||
[TableMediaUpload]: Knex.CompositeTableType<
|
||||
MediaUpload,
|
||||
Omit<
|
||||
MediaUpload,
|
||||
FieldNameMediaUpload.createdAt | FieldNameMediaUpload.uuid
|
||||
>,
|
||||
Pick<MediaUpload, FieldNameMediaUpload.noteId>
|
||||
>;
|
||||
[TableNote]: Knex.CompositeTableType<
|
||||
Note,
|
||||
Omit<Note, FieldNameNote.createdAt | FieldNameNote.id>,
|
||||
Pick<Note, FieldNameNote.ownerId>
|
||||
TypeInsertMediaUpload,
|
||||
TypeUpdateMediaUpload
|
||||
>;
|
||||
[TableNote]: Knex.CompositeTableType<Note, TypeInsertNote, TypeUpdateNote>;
|
||||
[TableNoteGroupPermission]: Knex.CompositeTableType<
|
||||
NoteGroupPermission,
|
||||
NoteGroupPermission,
|
||||
Pick<NoteGroupPermission, FieldNameNoteGroupPermission.canEdit>
|
||||
TypeUpdateNoteGroupPermission
|
||||
>;
|
||||
[TableNoteUserPermission]: Knex.CompositeTableType<
|
||||
NoteUserPermission,
|
||||
NoteUserPermission,
|
||||
Pick<NoteUserPermission, FieldNameNoteUserPermission.canEdit>
|
||||
>;
|
||||
[TableRevision]: Knex.CompositeTableType<
|
||||
Revision,
|
||||
Omit<Revision, FieldNameRevision.createdAt | FieldNameRevision.id>
|
||||
TypeUpdateNoteUserPermission
|
||||
>;
|
||||
[TableRevision]: Knex.CompositeTableType<Revision, TypeInsertRevision>;
|
||||
[TableRevisionTag]: RevisionTag;
|
||||
[TableUser]: Knex.CompositeTableType<
|
||||
User,
|
||||
Omit<User, FieldNameUser.id | FieldNameUser.createdAt>,
|
||||
Pick<
|
||||
User,
|
||||
| FieldNameUser.displayName
|
||||
| FieldNameUser.photoUrl
|
||||
| FieldNameUser.email
|
||||
| FieldNameUser.authorStyle
|
||||
>
|
||||
>;
|
||||
[TableUser]: Knex.CompositeTableType<User, TypeInsertUser, TypeUpdateUser>;
|
||||
[TableUserPinnedNote]: UserPinnedNote;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
>;
|
||||
|
|
|
@ -24,3 +24,8 @@ export enum FieldNameNoteGroupPermission {
|
|||
}
|
||||
|
||||
export const TableNoteGroupPermission = 'note_group_permission';
|
||||
|
||||
export type TypeUpdateNoteGroupPermission = Pick<
|
||||
NoteGroupPermission,
|
||||
FieldNameNoteGroupPermission.canEdit
|
||||
>;
|
||||
|
|
|
@ -24,3 +24,8 @@ export enum FieldNameNoteUserPermission {
|
|||
}
|
||||
|
||||
export const TableNoteUserPermission = 'note_user_permission';
|
||||
|
||||
export type TypeUpdateNoteUserPermission = Pick<
|
||||
NoteUserPermission,
|
||||
FieldNameNoteUserPermission.canEdit
|
||||
>;
|
||||
|
|
|
@ -31,3 +31,9 @@ export enum FieldNameNote {
|
|||
}
|
||||
|
||||
export const TableNote = 'note';
|
||||
|
||||
export type TypeInsertNote = Omit<
|
||||
Note,
|
||||
FieldNameNote.createdAt | FieldNameNote.id
|
||||
>;
|
||||
export type TypeUpdateNote = Pick<Note, FieldNameNote.ownerId>;
|
||||
|
|
|
@ -50,3 +50,8 @@ export enum FieldNameRevision {
|
|||
}
|
||||
|
||||
export const TableRevision = 'revision';
|
||||
|
||||
export type TypeInsertRevision = Omit<
|
||||
Revision,
|
||||
FieldNameRevision.createdAt | FieldNameRevision.id
|
||||
>;
|
||||
|
|
|
@ -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
|
||||
>;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue