Files
kamidso-back/kamidso/engine/serve/model/models/model_adapter.py
T
javadandCursor 228324db7b Track engine model packages so chat can start.
A bare models ignore rule left the Python packages out of git, so the deployed image failed while importing kamidso.engine.serve.rag.models.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-10 20:06:37 +03:30

74 lines
2.5 KiB
Python

import json
from typing import Type
from sqlalchemy.orm import Session
from kamidso.engine.core.core.interface.storage import StorageItemAdapter
from kamidso.engine.core.model.cluster.storage import ModelStorageIdentifier, ModelStorageItem
from .models import ServeEntity
class ModelStorageAdapter(StorageItemAdapter[ModelStorageItem, ServeEntity]):
"""File metadata adapter.
Convert between storage format and database model.
"""
def to_storage_format(self, item: ModelStorageItem) -> ServeEntity:
"""Convert to storage format."""
params = json.dumps(item.params, ensure_ascii=False)
enabled = 1 if item.enabled else 0
return ServeEntity(
host=item.host,
port=item.port,
model=item.model,
provider=item.provider,
worker_type=item.worker_type,
enabled=enabled,
worker_name=item.worker_name,
params=params,
description=item.description,
user_name=item.user_name,
sys_code=item.sys_code,
)
def from_storage_format(self, model: ServeEntity) -> ModelStorageItem:
"""Convert from storage format."""
params = json.loads(model.params)
enabled = True if model.enabled else False
return ModelStorageItem(
host=model.host,
port=model.port,
model=model.model,
provider=model.provider,
worker_type=model.worker_type,
enabled=enabled,
worker_name=model.worker_name,
params=params,
description=model.description,
user_name=model.user_name,
sys_code=model.sys_code,
)
def get_query_for_identifier(
self,
storage_format: Type[ServeEntity],
resource_id: ModelStorageIdentifier,
**kwargs,
):
"""Get query for identifier."""
session: Session = kwargs.get("session")
if session is None:
raise Exception("session is None")
query = (
session.query(storage_format)
.filter(storage_format.model == resource_id.model)
.filter(storage_format.worker_type == resource_id.worker_type)
)
if resource_id.user_name:
query = query.filter(storage_format.user_name == resource_id.user_name)
if resource_id.sys_code:
query = query.filter(storage_format.sys_code == resource_id.sys_code)
return query