# Description of Changes Change Stirling Engine to support deleting documents automatically. This happens both on user logout and after an amount of time specified by the Java when ingesting a document (allowing for personal documents to have short lifetimes but org documents to be left in the db with no expiry date). Also sets up an [ACL policy](https://en.wikipedia.org/wiki/Access-control_list) for the documents so the database knows which users have access to which documents. This is not fully implemented in the Java, so currently all docs are treated as having a single owner, the uploader, but theoretically when we need to support org storage, we shouldn't need to change the db schema.
31 lines
781 B
Python
31 lines
781 B
Python
from __future__ import annotations
|
|
|
|
from typing import NewType
|
|
|
|
from pydantic import BaseModel, ConfigDict
|
|
from pydantic.alias_generators import to_camel
|
|
|
|
# Stable, opaque identifier for a file supplied by the caller
|
|
FileId = NewType("FileId", str)
|
|
|
|
# Stable, opaque identifier for the calling user
|
|
UserId = NewType("UserId", str)
|
|
|
|
# Tenant that owns a document
|
|
OwnerId = NewType("OwnerId", str)
|
|
|
|
# An entity that can hold permissions on a document
|
|
PrincipalId = NewType("PrincipalId", str)
|
|
|
|
|
|
class ApiModel(BaseModel):
|
|
"""Base for every contract model crossing a service boundary."""
|
|
|
|
model_config = ConfigDict(
|
|
alias_generator=to_camel,
|
|
extra="forbid",
|
|
validate_by_name=True,
|
|
validate_by_alias=True,
|
|
serialize_by_alias=True,
|
|
)
|