Skip to content

Commit 77938e9

Browse files
authored
feat: add happened at and extra fields to memory item (#262)
1 parent 50b5502 commit 77938e9

3 files changed

Lines changed: 9 additions & 2 deletions

File tree

src/memu/database/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import uuid
44
from datetime import datetime
5-
from typing import Literal
5+
from typing import Any, Literal
66

77
import pendulum
88
from pydantic import BaseModel, ConfigDict, Field
@@ -31,6 +31,8 @@ class MemoryItem(BaseRecord):
3131
memory_type: MemoryType
3232
summary: str
3333
embedding: list[float] | None = None
34+
happened_at: datetime | None = None
35+
extra: dict[str, Any] = {}
3436

3537

3638
class MemoryCategory(BaseRecord):

src/memu/database/postgres/models.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
from pydantic import BaseModel
1616
from sqlalchemy import ForeignKey, MetaData, String, Text
17+
from sqlalchemy.dialects.postgresql import JSONB
1718
from sqlmodel import Column, DateTime, Field, Index, SQLModel, func
1819

1920
from memu.database.models import CategoryItem, MemoryCategory, MemoryItem, MemoryType, Resource
@@ -55,6 +56,8 @@ class MemoryItemModel(BaseModelMixin, MemoryItem):
5556
memory_type: MemoryType = Field(sa_column=Column(String, nullable=False))
5657
summary: str = Field(sa_column=Column(Text, nullable=False))
5758
embedding: list[float] | None = Field(default=None, sa_column=Column(Vector(), nullable=True))
59+
happened_at: datetime | None = Field(default=None, sa_column=Column(DateTime, nullable=True))
60+
extra: dict[str, Any] = Field(default={}, sa_column=Column(JSONB, nullable=True))
5861

5962

6063
class MemoryCategoryModel(BaseModelMixin, MemoryCategory):

src/memu/database/sqlite/models.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010

1111
import pendulum
1212
from pydantic import BaseModel
13-
from sqlalchemy import MetaData, String, Text
13+
from sqlalchemy import JSON, MetaData, String, Text
1414
from sqlmodel import Column, DateTime, Field, Index, SQLModel, func
1515

1616
from memu.database.models import CategoryItem, MemoryCategory, MemoryItem, MemoryType, Resource
@@ -83,6 +83,8 @@ class SQLiteMemoryItemModel(SQLiteBaseModelMixin, MemoryItem):
8383
summary: str = Field(sa_column=Column(Text, nullable=False))
8484
# Store embedding as JSON string since SQLite doesn't have native vector type
8585
embedding_json: str | None = Field(default=None, sa_column=Column(Text, nullable=True))
86+
happened_at: datetime | None = Field(default=None, sa_column=Column(DateTime, nullable=True))
87+
extra: dict[str, Any] = Field(default={}, sa_column=Column(JSON, nullable=True))
8688

8789
@property
8890
def embedding(self) -> list[float] | None:

0 commit comments

Comments
 (0)