forked from google/adk-python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_memory_schemas.py
More file actions
65 lines (47 loc) · 1.98 KB
/
Copy path_memory_schemas.py
File metadata and controls
65 lines (47 loc) · 1.98 KB
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
53
54
55
56
57
58
59
60
61
62
63
64
65
# Copyright 2026 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""SQLAlchemy ORM models for DatabaseMemoryService."""
from __future__ import annotations
from typing import Any
from typing import Optional
from sqlalchemy import Float
from sqlalchemy import Index
from sqlalchemy import Text
from sqlalchemy.orm import DeclarativeBase
from sqlalchemy.orm import Mapped
from sqlalchemy.orm import mapped_column
from sqlalchemy.types import String
from ..sessions.schemas.shared import DynamicJSON
_MAX_KEY_LENGTH = 128
class Base(DeclarativeBase): # type: ignore[misc]
"""Base class for memory database tables."""
pass
class StorageMemoryEntry(Base):
"""Represents a single memory entry stored in the database."""
__tablename__ = "adk_memory_entries"
id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True)
app_name: Mapped[str] = mapped_column(String(_MAX_KEY_LENGTH), index=True)
user_id: Mapped[str] = mapped_column(String(_MAX_KEY_LENGTH), index=True)
keywords: Mapped[str] = mapped_column(Text)
author: Mapped[Optional[str]] = mapped_column(
String(_MAX_KEY_LENGTH), nullable=True
)
content: Mapped[dict[str, Any]] = mapped_column(DynamicJSON)
timestamp: Mapped[Optional[float]] = mapped_column(Float, nullable=True)
__table_args__ = (Index("idx_memory_app_user", "app_name", "user_id"),)
def __repr__(self) -> str:
return (
f"<StorageMemoryEntry(id={self.id}, app_name={self.app_name!r}, "
f"user_id={self.user_id!r})>"
)