File size: 1,827 Bytes
01d5a5d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from datetime import datetime
from sqlalchemy import Column, String, BigInteger, JSON, DateTime, Enum
from sqlalchemy.sql import func
from lpm_kernel.common.repository.database_session import Base
import os


class Memory(Base):
    """Memory model class"""

    __tablename__ = "memories"

    id = Column(String(36), primary_key=True)
    name = Column(String(255), nullable=False)
    size = Column(BigInteger, nullable=False)
    type = Column(String(50), nullable=False)
    path = Column(String(1024), nullable=False)
    meta_data = Column(JSON)
    document_id = Column(String(36), nullable=True)  # associated document ID
    created_at = Column(DateTime, server_default=func.now())
    updated_at = Column(DateTime, server_default=func.now(), onupdate=func.now())
    status = Column(Enum("active", "deleted"), nullable=False, default="active")

    def __init__(self, name, size, path, metadata=None):
        import uuid

        self.id = str(uuid.uuid4())
        self.name = name
        self.size = size
        self.path = path
        self.meta_data = metadata or {}
        # get type from file extension, if no extension, set to 'unknown'
        _, ext = os.path.splitext(path)
        self.type = ext[1:].lower() if ext else "unknown"
        # set default time
        self.created_at = datetime.now()
        self.updated_at = datetime.now()

    def to_dict(self):
        """Convert to dictionary, including document_id"""
        result = {
            "id": self.id,
            "name": self.name,
            "type": self.type,
            "path": self.path,
            "created_at": self.created_at.isoformat() if self.created_at else None,
            "meta_data": self.meta_data,
        }
        if self.document_id:
            result["document_id"] = self.document_id
        return result