@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
60 lines (59 loc) • 2.31 kB
TypeScript
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { Identity } from "./identities";
export interface IDataOwner {
/**
* Omnia service owning the responsibility of storing and handle versioning of this data.
* Inherit from this to create new basetypes that can be stored and versioned by your omnia service
* */
readonly omniaServiceId: GuidValue;
}
export interface IVersionedDataTypeIdentifier {
/**
* Each data type that shoud be versioned must specify an identifier for the data type
* */
readonly dataTypeId: GuidValue;
}
export interface IVersionedDataIdentifier extends IDataOwner, IVersionedDataTypeIdentifier {
readonly dataId: string;
}
export interface IVersionReference extends IDataOwner, IVersionedDataTypeIdentifier {
readonly versionId: number;
}
export interface IVersionInformation extends IVersionReference, IVersionedDataIdentifier {
readonly majorVersion: number;
readonly minorVersion: number;
readonly modifiedAt: string;
readonly modifiedBy: Identity;
}
export interface DataToVersion extends IDataOwner, IVersionedDataTypeIdentifier {
readonly omniaServiceId: GuidValue;
readonly dataTypeId: GuidValue;
}
export interface IVersionedData<DataType extends DataToVersion> extends IVersionInformation {
readonly data: DataType;
}
export interface ICheckedoutVersionedData<DataType extends DataToVersion> extends IVersionedData<DataType> {
readonly checkedOutBy: Identity;
}
export declare class VersionReference implements IVersionReference {
versionId: number;
omniaServiceId: GuidValue;
dataTypeId: GuidValue;
constructor(data: IVersionReference);
}
export interface CheckoutRequest {
dataIdentifier: IVersionedDataIdentifier;
takeOver: boolean;
}
export interface LatestReferenceResponse {
latestCheckedoutByMe: IVersionReference;
latestCheckedout: IVersionReference;
latestDraft: IVersionReference;
latestPublished: IVersionReference;
}
export interface LatestDataResponse<DataType extends DataToVersion> {
latestCheckedoutByMe: ICheckedoutVersionedData<DataType>;
latestCheckedout: ICheckedoutVersionedData<DataType>;
latestDraft: IVersionedData<DataType>;
latestPublished: IVersionedData<DataType>;
}