damsel/proto/domain_config.thrift
2016-04-27 15:23:15 +03:00

76 lines
1.7 KiB
Thrift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Интерфейс и связанные с ним определения сервиса конфигурации предметной
* области (domain config).
*/
include "domain.thrift"
/**
* Маркер вершины истории.
*/
struct Head {}
/**
* Вариант представления ревизии в истории.
*/
union Revision {
1: i64 rev;
2: Head head;
}
/**
* Монотонно возрастающая версия монолитного набора объектов, определённая
* точка в его истории набора объектов.
*/
struct Version {
1: required i32 schema = domain.REVISION;
2: required Revision data;
}
/**
* Возможные операции над набором объектов.
*/
union Operation {
1: InsertOp insert;
2: UpdateOp update;
3: RemoveOp remove;
}
struct InsertOp {
1: required domain.Object object;
}
struct UpdateOp {
1: required domain.Object object;
}
struct RemoveOp {
1: required domain.Reference ref;
}
exception VersionNotFound {}
exception ObjectNotFound {}
exception OperationConflict {}
/**
* Интерфейс сервиса конфигурации предметной области.
*/
service DomainConfig {
Version head ()
throws ();
Version pollHead ()
throws ();
domain.Domain checkout (1: Version v)
throws (1: VersionNotFound ex1);
domain.Object checkoutObject (1: Version v, 2: domain.Reference ref)
throws (1: VersionNotFound ex1, 2: ObjectNotFound ex2);
Version commit (1: Version v, 2: Operation op)
throws (1: VersionNotFound ex1, 2: OperationConflict ex3);
}