mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2025-07-30 18:27:45 -05:00
Refactor frontend data models
This commit is contained in:
43
src-ui/src/app/data/consumption-template.ts
Normal file
43
src-ui/src/app/data/consumption-template.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export enum DocumentSource {
|
||||
ConsumeFolder = 1,
|
||||
ApiUpload = 2,
|
||||
MailFetch = 3,
|
||||
}
|
||||
|
||||
export interface ConsumptionTemplate extends ObjectWithId {
|
||||
name: string
|
||||
|
||||
order: number
|
||||
|
||||
sources: DocumentSource[]
|
||||
|
||||
filter_filename: string
|
||||
|
||||
filter_path?: string
|
||||
|
||||
filter_mailrule?: number // MailRule.id
|
||||
|
||||
assign_title?: string
|
||||
|
||||
assign_tags?: number[] // Tag.id
|
||||
|
||||
assign_document_type?: number // DocumentType.id
|
||||
|
||||
assign_correspondent?: number // Correspondent.id
|
||||
|
||||
assign_storage_path?: number // StoragePath.id
|
||||
|
||||
assign_owner?: number // User.id
|
||||
|
||||
assign_view_users?: number[] // [User.id]
|
||||
|
||||
assign_view_groups?: number[] // [Group.id]
|
||||
|
||||
assign_change_users?: number[] // [User.id]
|
||||
|
||||
assign_change_groups?: number[] // [Group.id]
|
||||
|
||||
assign_custom_fields?: number[] // [CustomField.id]
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
import { MatchingModel } from './matching-model'
|
||||
|
||||
export interface PaperlessCorrespondent extends MatchingModel {
|
||||
export interface Correspondent extends MatchingModel {
|
||||
last_correspondence?: string // Date
|
||||
}
|
8
src-ui/src/app/data/custom-field-instance.ts
Normal file
8
src-ui/src/app/data/custom-field-instance.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export interface CustomFieldInstance extends ObjectWithId {
|
||||
document: number // Document
|
||||
field: number // CustomField
|
||||
created: Date
|
||||
value?: any
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export enum PaperlessCustomFieldDataType {
|
||||
export enum CustomFieldDataType {
|
||||
String = 'string',
|
||||
Url = 'url',
|
||||
Date = 'date',
|
||||
@@ -13,41 +13,41 @@ export enum PaperlessCustomFieldDataType {
|
||||
|
||||
export const DATA_TYPE_LABELS = [
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Boolean,
|
||||
id: CustomFieldDataType.Boolean,
|
||||
name: $localize`Boolean`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Date,
|
||||
id: CustomFieldDataType.Date,
|
||||
name: $localize`Date`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Integer,
|
||||
id: CustomFieldDataType.Integer,
|
||||
name: $localize`Integer`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Float,
|
||||
id: CustomFieldDataType.Float,
|
||||
name: $localize`Number`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Monetary,
|
||||
id: CustomFieldDataType.Monetary,
|
||||
name: $localize`Monetary`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.String,
|
||||
id: CustomFieldDataType.String,
|
||||
name: $localize`Text`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.Url,
|
||||
id: CustomFieldDataType.Url,
|
||||
name: $localize`Url`,
|
||||
},
|
||||
{
|
||||
id: PaperlessCustomFieldDataType.DocumentLink,
|
||||
id: CustomFieldDataType.DocumentLink,
|
||||
name: $localize`Document Link`,
|
||||
},
|
||||
]
|
||||
|
||||
export interface PaperlessCustomField extends ObjectWithId {
|
||||
data_type: PaperlessCustomFieldDataType
|
||||
export interface CustomField extends ObjectWithId {
|
||||
data_type: CustomFieldDataType
|
||||
name: string
|
||||
created?: Date
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
export interface PaperlessDocumentMetadata {
|
||||
export interface DocumentMetadata {
|
||||
original_checksum?: string
|
||||
|
||||
archived_checksum?: string
|
7
src-ui/src/app/data/document-note.ts
Normal file
7
src-ui/src/app/data/document-note.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export interface DocumentNote extends ObjectWithId {
|
||||
created?: Date
|
||||
note?: string
|
||||
user?: number // User
|
||||
}
|
@@ -1,4 +1,4 @@
|
||||
export interface PaperlessDocumentSuggestions {
|
||||
export interface DocumentSuggestions {
|
||||
tags?: number[]
|
||||
|
||||
correspondents?: number[]
|
3
src-ui/src/app/data/document-type.ts
Normal file
3
src-ui/src/app/data/document-type.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import { MatchingModel } from './matching-model'
|
||||
|
||||
export interface DocumentType extends MatchingModel {}
|
66
src-ui/src/app/data/document.ts
Normal file
66
src-ui/src/app/data/document.ts
Normal file
@@ -0,0 +1,66 @@
|
||||
import { Correspondent } from './correspondent'
|
||||
import { Tag } from './tag'
|
||||
import { DocumentType } from './document-type'
|
||||
import { Observable } from 'rxjs'
|
||||
import { StoragePath } from './storage-path'
|
||||
import { ObjectWithPermissions } from './object-with-permissions'
|
||||
import { DocumentNote } from './document-note'
|
||||
import { CustomFieldInstance } from './custom-field-instance'
|
||||
|
||||
export interface SearchHit {
|
||||
score?: number
|
||||
rank?: number
|
||||
|
||||
highlights?: string
|
||||
note_highlights?: string
|
||||
}
|
||||
|
||||
export interface Document extends ObjectWithPermissions {
|
||||
correspondent$?: Observable<Correspondent>
|
||||
|
||||
correspondent?: number
|
||||
|
||||
document_type$?: Observable<DocumentType>
|
||||
|
||||
document_type?: number
|
||||
|
||||
storage_path$?: Observable<StoragePath>
|
||||
|
||||
storage_path?: number
|
||||
|
||||
title?: string
|
||||
|
||||
content?: string
|
||||
|
||||
tags$?: Observable<Tag[]>
|
||||
|
||||
tags?: number[]
|
||||
|
||||
checksum?: string
|
||||
|
||||
// UTC
|
||||
created?: Date
|
||||
|
||||
// localized date
|
||||
created_date?: Date
|
||||
|
||||
modified?: Date
|
||||
|
||||
added?: Date
|
||||
|
||||
original_file_name?: string
|
||||
|
||||
archived_file_name?: string
|
||||
|
||||
download_url?: string
|
||||
|
||||
thumbnail_url?: string
|
||||
|
||||
archive_serial_number?: number
|
||||
|
||||
notes?: DocumentNote[]
|
||||
|
||||
__search_hit__?: SearchHit
|
||||
|
||||
custom_fields?: CustomFieldInstance[]
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export interface PaperlessGroup extends ObjectWithId {
|
||||
export interface Group extends ObjectWithId {
|
||||
name?: string
|
||||
|
||||
user_count?: number // not implemented yet
|
@@ -6,7 +6,7 @@ export enum IMAPSecurity {
|
||||
STARTTLS = 3,
|
||||
}
|
||||
|
||||
export interface PaperlessMailAccount extends ObjectWithPermissions {
|
||||
export interface MailAccount extends ObjectWithPermissions {
|
||||
name: string
|
||||
|
||||
imap_server: string
|
@@ -32,7 +32,7 @@ export enum MailMetadataCorrespondentOption {
|
||||
FromCustom = 4,
|
||||
}
|
||||
|
||||
export interface PaperlessMailRule extends ObjectWithPermissions {
|
||||
export interface MailRule extends ObjectWithPermissions {
|
||||
name: string
|
||||
|
||||
account: number // PaperlessMailAccount.id
|
@@ -1,43 +0,0 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export enum DocumentSource {
|
||||
ConsumeFolder = 1,
|
||||
ApiUpload = 2,
|
||||
MailFetch = 3,
|
||||
}
|
||||
|
||||
export interface PaperlessConsumptionTemplate extends ObjectWithId {
|
||||
name: string
|
||||
|
||||
order: number
|
||||
|
||||
sources: DocumentSource[]
|
||||
|
||||
filter_filename: string
|
||||
|
||||
filter_path?: string
|
||||
|
||||
filter_mailrule?: number // PaperlessMailRule.id
|
||||
|
||||
assign_title?: string
|
||||
|
||||
assign_tags?: number[] // PaperlessTag.id
|
||||
|
||||
assign_document_type?: number // PaperlessDocumentType.id
|
||||
|
||||
assign_correspondent?: number // PaperlessCorrespondent.id
|
||||
|
||||
assign_storage_path?: number // PaperlessStoragePath.id
|
||||
|
||||
assign_owner?: number // PaperlessUser.id
|
||||
|
||||
assign_view_users?: number[] // [PaperlessUser.id]
|
||||
|
||||
assign_view_groups?: number[] // [PaperlessGroup.id]
|
||||
|
||||
assign_change_users?: number[] // [PaperlessUser.id]
|
||||
|
||||
assign_change_groups?: number[] // [PaperlessGroup.id]
|
||||
|
||||
assign_custom_fields?: number[] // [PaperlessCustomField.id]
|
||||
}
|
@@ -1,9 +0,0 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
import { PaperlessCustomField } from './paperless-custom-field'
|
||||
|
||||
export interface PaperlessCustomFieldInstance extends ObjectWithId {
|
||||
document: number // PaperlessDocument
|
||||
field: number // PaperlessCustomField
|
||||
created: Date
|
||||
value?: any
|
||||
}
|
@@ -1,7 +0,0 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export interface PaperlessDocumentNote extends ObjectWithId {
|
||||
created?: Date
|
||||
note?: string
|
||||
user?: number // PaperlessUser
|
||||
}
|
@@ -1,3 +0,0 @@
|
||||
import { MatchingModel } from './matching-model'
|
||||
|
||||
export interface PaperlessDocumentType extends MatchingModel {}
|
@@ -1,66 +0,0 @@
|
||||
import { PaperlessCorrespondent } from './paperless-correspondent'
|
||||
import { PaperlessTag } from './paperless-tag'
|
||||
import { PaperlessDocumentType } from './paperless-document-type'
|
||||
import { Observable } from 'rxjs'
|
||||
import { PaperlessStoragePath } from './paperless-storage-path'
|
||||
import { ObjectWithPermissions } from './object-with-permissions'
|
||||
import { PaperlessDocumentNote } from './paperless-document-note'
|
||||
import { PaperlessCustomFieldInstance } from './paperless-custom-field-instance'
|
||||
|
||||
export interface SearchHit {
|
||||
score?: number
|
||||
rank?: number
|
||||
|
||||
highlights?: string
|
||||
note_highlights?: string
|
||||
}
|
||||
|
||||
export interface PaperlessDocument extends ObjectWithPermissions {
|
||||
correspondent$?: Observable<PaperlessCorrespondent>
|
||||
|
||||
correspondent?: number
|
||||
|
||||
document_type$?: Observable<PaperlessDocumentType>
|
||||
|
||||
document_type?: number
|
||||
|
||||
storage_path$?: Observable<PaperlessStoragePath>
|
||||
|
||||
storage_path?: number
|
||||
|
||||
title?: string
|
||||
|
||||
content?: string
|
||||
|
||||
tags$?: Observable<PaperlessTag[]>
|
||||
|
||||
tags?: number[]
|
||||
|
||||
checksum?: string
|
||||
|
||||
// UTC
|
||||
created?: Date
|
||||
|
||||
// localized date
|
||||
created_date?: Date
|
||||
|
||||
modified?: Date
|
||||
|
||||
added?: Date
|
||||
|
||||
original_file_name?: string
|
||||
|
||||
archived_file_name?: string
|
||||
|
||||
download_url?: string
|
||||
|
||||
thumbnail_url?: string
|
||||
|
||||
archive_serial_number?: number
|
||||
|
||||
notes?: PaperlessDocumentNote[]
|
||||
|
||||
__search_hit__?: SearchHit
|
||||
|
||||
custom_fields?: PaperlessCustomFieldInstance[]
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
import { FilterRule } from './filter-rule'
|
||||
import { ObjectWithPermissions } from './object-with-permissions'
|
||||
|
||||
export interface PaperlessSavedView extends ObjectWithPermissions {
|
||||
export interface SavedView extends ObjectWithPermissions {
|
||||
name?: string
|
||||
|
||||
show_on_dashboard?: boolean
|
@@ -1,18 +1,18 @@
|
||||
import { ObjectWithPermissions } from './object-with-permissions'
|
||||
|
||||
export enum PaperlessFileVersion {
|
||||
export enum FileVersion {
|
||||
Archive = 'archive',
|
||||
Original = 'original',
|
||||
}
|
||||
|
||||
export interface PaperlessShareLink extends ObjectWithPermissions {
|
||||
export interface ShareLink extends ObjectWithPermissions {
|
||||
created: string // Date
|
||||
|
||||
expiration?: string // Date
|
||||
|
||||
slug: string
|
||||
|
||||
document: number // PaperlessDocument
|
||||
document: number // Document
|
||||
|
||||
file_version: string
|
||||
}
|
@@ -1,5 +1,5 @@
|
||||
import { MatchingModel } from './matching-model'
|
||||
|
||||
export interface PaperlessStoragePath extends MatchingModel {
|
||||
export interface StoragePath extends MatchingModel {
|
||||
path?: string
|
||||
}
|
@@ -1,6 +1,6 @@
|
||||
import { MatchingModel } from './matching-model'
|
||||
|
||||
export interface PaperlessTag extends MatchingModel {
|
||||
export interface Tag extends MatchingModel {
|
||||
color?: string
|
||||
|
||||
text_color?: string
|
@@ -1,12 +1,12 @@
|
||||
import { PaperlessUser } from './paperless-user'
|
||||
import { User } from './user'
|
||||
|
||||
export interface PaperlessUiSettings {
|
||||
user: PaperlessUser
|
||||
export interface UiSettings {
|
||||
user: User
|
||||
settings: Object
|
||||
permissions: string[]
|
||||
}
|
||||
|
||||
export interface PaperlessUiSetting {
|
||||
export interface UiSetting {
|
||||
key: string
|
||||
type: string
|
||||
default: any
|
||||
@@ -53,7 +53,7 @@ export const SETTINGS_KEYS = {
|
||||
DEFAULT_PERMS_EDIT_GROUPS: 'general-settings:permissions:default-edit-groups',
|
||||
}
|
||||
|
||||
export const SETTINGS: PaperlessUiSetting[] = [
|
||||
export const SETTINGS: UiSetting[] = [
|
||||
{
|
||||
key: SETTINGS_KEYS.LANGUAGE,
|
||||
type: 'string',
|
@@ -1,6 +1,6 @@
|
||||
import { ObjectWithId } from './object-with-id'
|
||||
|
||||
export interface PaperlessUser extends ObjectWithId {
|
||||
export interface User extends ObjectWithId {
|
||||
username?: string
|
||||
first_name?: string
|
||||
last_name?: string
|
||||
@@ -8,7 +8,7 @@ export interface PaperlessUser extends ObjectWithId {
|
||||
is_staff?: boolean
|
||||
is_active?: boolean
|
||||
is_superuser?: boolean
|
||||
groups?: number[] // PaperlessGroup[]
|
||||
groups?: number[] // Group[]
|
||||
user_permissions?: string[]
|
||||
inherited_permissions?: string[]
|
||||
}
|
Reference in New Issue
Block a user