|
| 1 | +import type { AttachmentProcessorExtractedProp } from '../../../database/engine'; |
1 | 2 | import { ENTITY_TYPE_INTERNAL_FILE } from '../../../schema/internalObject'; |
2 | 3 | import { schemaAttributesDefinition } from '../../../schema/schema-attributes'; |
3 | | -import { type AttributeDefinition, createdAt, creators, entityType, id, internalId, parentTypes, refreshedAt, standardId, updatedAt } from '../../../schema/attribute-definition'; |
| 4 | +import { |
| 5 | + type AttributeDefinition, |
| 6 | + createdAt, |
| 7 | + creators, |
| 8 | + entityType, |
| 9 | + id, |
| 10 | + internalId, |
| 11 | + parentTypes, |
| 12 | + refreshedAt, |
| 13 | + standardId, |
| 14 | + updatedAt, |
| 15 | + type MappingDefinition, |
| 16 | + type BasicStoreAttribute, |
| 17 | +} from '../../../schema/attribute-definition'; |
4 | 18 | import { ENTITY_TYPE_MARKING_DEFINITION } from '../../../schema/stixMetaObject'; |
5 | 19 | import { ABSTRACT_STIX_CORE_OBJECT } from '../../../schema/general'; |
6 | 20 | import { UPLOAD_STATUS_VALUES } from './document-domain'; |
7 | 21 |
|
8 | | -const attributes: Array<AttributeDefinition> = [ |
| 22 | +export const ATTACHMENT_MAPPINGS = [ |
| 23 | + { name: 'author', label: 'Author', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 24 | + { name: 'comments', label: 'Comments', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 25 | + { name: 'content', label: 'Content', type: 'string', format: 'text', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 26 | + { name: 'content_length', label: 'Content length', type: 'numeric', precision: 'integer', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 27 | + { name: 'content_type', label: 'Content type', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 28 | + { name: 'creator_tool', label: 'Creator tool', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 29 | + { name: 'date', label: 'Created date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 30 | + { name: 'description', label: 'Description', type: 'string', format: 'text', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 31 | + { name: 'format', label: 'Format', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 32 | + { name: 'keywords', label: 'Keywords', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 33 | + { name: 'language', label: 'Language', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 34 | + { name: 'metadata_date', label: 'Metadata date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 35 | + { name: 'modified', label: 'Modified date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 36 | + { name: 'modifier', label: 'Modifier', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 37 | + { name: 'print_date', label: 'Print date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 38 | + { name: 'title', label: 'Title', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
| 39 | +] satisfies ({ |
| 40 | + name: AttachmentProcessorExtractedProp; |
| 41 | +} & MappingDefinition<BasicStoreAttribute>)[]; |
| 42 | + |
| 43 | +type KeysInArray = typeof ATTACHMENT_MAPPINGS[number]['name']; |
| 44 | +type AttributesDefinitionWithCheck = Exclude<AttachmentProcessorExtractedProp, KeysInArray> extends never |
| 45 | + ? Array<AttributeDefinition> |
| 46 | + : 'Make sure ATTACHMENT_MAPPINGS defines one mapping for each AttachmentProcessorExtractedProp'; |
| 47 | + |
| 48 | +const attributes: AttributesDefinitionWithCheck = [ |
9 | 49 | id, |
10 | 50 | internalId, |
11 | 51 | standardId, |
@@ -70,24 +110,7 @@ const attributes: Array<AttributeDefinition> = [ |
70 | 110 | multiple: false, |
71 | 111 | upsert: false, |
72 | 112 | isFilterable: false, |
73 | | - mappings: [ |
74 | | - { name: 'author', label: 'Author', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
75 | | - { name: 'comments', label: 'Comments', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
76 | | - { name: 'content', label: 'Content', type: 'string', format: 'text', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
77 | | - { name: 'content_length', label: 'Content length', type: 'numeric', precision: 'integer', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
78 | | - { name: 'content_type', label: 'Content type', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
79 | | - { name: 'creator_tool', label: 'Creator tool', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
80 | | - { name: 'date', label: 'Created date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
81 | | - { name: 'description', label: 'Description', type: 'string', format: 'text', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
82 | | - { name: 'format', label: 'Format', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
83 | | - { name: 'keywords', label: 'Keywords', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
84 | | - { name: 'language', label: 'Language', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
85 | | - { name: 'metadata_date', label: 'Metadata date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
86 | | - { name: 'modified', label: 'Modified date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
87 | | - { name: 'modifier', label: 'Modifier', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
88 | | - { name: 'print_date', label: 'Print date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
89 | | - { name: 'title', label: 'Title', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: true }, |
90 | | - ], |
| 113 | + mappings: ATTACHMENT_MAPPINGS, |
91 | 114 | }, |
92 | 115 | { name: 'uploaded_at', label: 'Upload date', type: 'date', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: false }, |
93 | 116 | { name: 'file_id', label: 'File identifier', type: 'string', format: 'short', mandatoryType: 'internal', editDefault: false, multiple: false, upsert: false, isFilterable: false }, |
|
0 commit comments