Files
reason-flow/server/models/Document.js
T

74 lines
1.5 KiB
JavaScript
Raw Normal View History

2025-11-06 11:08:59 +01:00
module.exports = (sequelize, DataTypes) => {
const Document = sequelize.define('Document', {
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true
},
filename: {
type: DataTypes.STRING,
allowNull: false
},
original_filename: {
type: DataTypes.STRING,
allowNull: false
},
file_path: {
type: DataTypes.STRING,
allowNull: false
},
file_type: {
type: DataTypes.STRING,
allowNull: false
},
file_size: {
type: DataTypes.BIGINT,
allowNull: false
},
content: {
type: DataTypes.TEXT,
allowNull: true
},
extracted_text: {
type: DataTypes.TEXT,
allowNull: true
},
embeddings: {
type: DataTypes.JSONB,
allowNull: true
},
metadata: {
type: DataTypes.JSONB,
defaultValue: {}
},
is_indexed: {
type: DataTypes.BOOLEAN,
defaultValue: false
},
indexing_status: {
type: DataTypes.ENUM('pending', 'processing', 'completed', 'failed'),
defaultValue: 'pending'
},
tags: {
type: DataTypes.ARRAY(DataTypes.STRING),
defaultValue: []
},
category: {
type: DataTypes.STRING,
allowNull: true
}
}, {
tableName: 'documents',
indexes: [
{ fields: ['file_type'] },
{ fields: ['is_indexed'] },
{ fields: ['indexing_status'] },
{ fields: ['category'] },
{ fields: ['tags'] },
{ fields: ['created_at'] }
]
});
return Document;
};