migration can gain functionality of table definition from now on2

This commit is contained in:
Priec
2026-09-08 16:38:21 +02:00
parent d8663d946f
commit 4a378a5c1e
9 changed files with 751 additions and 219 deletions

View File

@@ -12,7 +12,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
.type_attribute(".komp_ac.common", serde)
.type_attribute(".komp_ac.document_data", serde)
.type_attribute(
".komp_ac.document_data.TypstTemplateVersion",
".komp_ac.document_data.DocumentTemplateVersion",
"#[derive(Eq)]",
)
.type_attribute(".komp_ac.ecb", serde)

View File

@@ -2,15 +2,30 @@ syntax = "proto3";
package komp_ac.document_data;
service DocumentDataService {
rpc RegisterTypstTemplate(RegisterTypstTemplateRequest) returns (RegisterTypstTemplateResponse);
rpc ListTypstTemplates(ListTypstTemplatesRequest) returns (ListTypstTemplatesResponse);
rpc ListEnabledTypstTemplates(ListEnabledTypstTemplatesRequest) returns (ListTypstTemplatesResponse);
rpc RegisterDocumentTemplate(RegisterDocumentTemplateRequest) returns (RegisterDocumentTemplateResponse);
rpc ListDocumentTemplates(ListDocumentTemplatesRequest) returns (ListDocumentTemplatesResponse);
rpc ListEnabledDocumentTemplates(ListEnabledDocumentTemplatesRequest) returns (ListDocumentTemplatesResponse);
rpc SaveDocument(SaveDocumentRequest) returns (SaveDocumentResponse);
rpc UpdateDocument(UpdateDocumentRequest) returns (UpdateDocumentResponse);
rpc RenderTextDocument(RenderTextDocumentRequest) returns (RenderTextDocumentResponse);
rpc FinalizeDocument(FinalizeDocumentRequest) returns (FinalizeDocumentResponse);
rpc GetArchivedDocument(GetArchivedDocumentRequest) returns (GetArchivedDocumentResponse);
rpc GetDocuments(GetDocumentsRequest) returns (GetDocumentsResponse);
rpc GetDocument(GetDocumentRequest) returns (GetDocumentResponse);
rpc GetDocumentVersion(GetDocumentVersionRequest) returns (GetDocumentVersionResponse);
rpc GetTypstTemplateVersion(GetTypstTemplateVersionRequest) returns (GetTypstTemplateVersionResponse);
rpc GetDocumentTemplateVersion(GetDocumentTemplateVersionRequest) returns (GetDocumentTemplateVersionResponse);
}
enum DocumentFormat {
DOCUMENT_FORMAT_UNSPECIFIED = 0;
DOCUMENT_FORMAT_TYPST = 1;
DOCUMENT_FORMAT_PLAIN_TEXT = 2;
}
enum DocumentState {
DOCUMENT_STATE_UNSPECIFIED = 0;
DOCUMENT_STATE_DRAFT = 1;
DOCUMENT_STATE_FINALIZED = 2;
}
message SourceRecord {
@@ -25,29 +40,32 @@ message SaveDocumentRequest {
string template_name = 2;
string data_json = 3;
int64 expected_template_version_id = 4;
string profile_name = 5;
}
message RegisterTypstTemplateRequest {
message RegisterDocumentTemplateRequest {
string template_name = 1;
string input_table_name = 2;
string typst_source = 3;
string typst_compiler_version = 4;
string template_source = 3;
string renderer_version = 4;
DocumentFormat format = 5;
}
message RegisterTypstTemplateResponse {
TypstTemplateVersion template_version = 1;
message RegisterDocumentTemplateResponse {
DocumentTemplateVersion template_version = 1;
}
message ListTypstTemplatesRequest {
message ListDocumentTemplatesRequest {
string search = 1;
uint32 limit = 2;
DocumentFormat format = 3;
}
message ListTypstTemplatesResponse {
repeated TypstTemplateVersion templates = 1;
message ListDocumentTemplatesResponse {
repeated DocumentTemplateVersion templates = 1;
}
message ListEnabledTypstTemplatesRequest {
message ListEnabledDocumentTemplatesRequest {
string profile_name = 1;
}
@@ -62,6 +80,8 @@ message SaveDocumentResponse {
message UpdateDocumentRequest {
int64 document_id = 1;
string data_json = 2;
string profile_name = 3;
int32 expected_version_number = 4;
}
message UpdateDocumentResponse {
@@ -76,6 +96,7 @@ message GetDocumentsRequest {
optional string template_name = 3;
optional string source_profile_name = 4;
optional string source_table_name = 5;
string profile_name = 6;
}
enum DocumentDataChangeKind {
@@ -96,6 +117,9 @@ message Document {
string updated_at = 9;
int64 template_version_id = 10;
string data_sha256 = 11;
string profile_name = 12;
DocumentState state = 13;
optional int64 archive_id = 14;
}
message GetDocumentsResponse {
@@ -104,6 +128,7 @@ message GetDocumentsResponse {
message GetDocumentRequest {
int64 document_id = 1;
string profile_name = 2;
}
message GetDocumentResponse {
@@ -113,40 +138,90 @@ message GetDocumentResponse {
message GetDocumentVersionRequest {
int64 document_id = 1;
int32 version_number = 2;
string profile_name = 3;
}
message GetDocumentVersionResponse {
optional Document document = 1;
}
message GetTypstTemplateVersionRequest {
message GetDocumentTemplateVersionRequest {
int64 template_version_id = 1;
int64 document_id = 2;
string profile_name = 3;
}
message TypstTemplateVersion {
message DocumentTemplateVersion {
int64 id = 1;
int64 template_id = 2;
string template_name = 3;
int32 version = 4;
string source_code = 5;
string source_sha256 = 6;
string typst_compiler_version = 7;
string renderer_version = 7;
string created_at = 8;
string input_table_name = 9;
repeated string field_paths = 10;
repeated TypstTemplateFieldBinding field_bindings = 11;
repeated DocumentTemplateFieldBinding field_bindings = 11;
DocumentFormat format = 12;
}
// One profile-specific source mapping for an enabled template version.
message TypstTemplateFieldBinding {
message DocumentTemplateFieldBinding {
string field_path = 1;
string collection_path = 2;
string column_name = 3;
string source_table_name = 4;
string source_column_name = 5;
string source_profile_name = 6;
}
message GetTypstTemplateVersionResponse {
optional TypstTemplateVersion template_version = 1;
message GetDocumentTemplateVersionResponse {
optional DocumentTemplateVersion template_version = 1;
}
message RenderTextDocumentRequest {
string profile_name = 1;
int64 document_id = 2;
int32 expected_version_number = 3;
}
message RenderTextDocumentResponse {
string text = 1;
string renderer_version = 2;
string data_sha256 = 3;
}
message FinalizeDocumentRequest {
string profile_name = 1;
int64 document_id = 2;
int32 expected_version_number = 3;
// Typst output is compiled by the caller with the pinned template and data.
// Plain-text output is rendered by the server; these fields must be empty.
bytes rendered_output = 4;
string renderer_version = 5;
}
message FinalizeDocumentResponse {
int64 archive_id = 1;
string output_sha256 = 2;
}
message GetArchivedDocumentRequest {
string profile_name = 1;
int64 archive_id = 2;
}
message ArchivedDocument {
int64 id = 1;
Document document = 2;
DocumentTemplateVersion template_version = 3;
DocumentFormat format = 4;
bytes output = 5;
string output_sha256 = 6;
string finalized_at = 7;
}
message GetArchivedDocumentResponse {
optional ArchivedDocument document = 1;
}

Binary file not shown.

File diff suppressed because it is too large Load Diff