2023-11-17 20:51:13 +03:00
|
|
|
/**
|
2024-05-26 14:54:02 +03:00
|
|
|
* Module: Models for LibraryItem.
|
2023-11-17 20:51:13 +03:00
|
|
|
*/
|
2023-09-11 20:31:54 +03:00
|
|
|
|
2024-05-27 20:42:34 +03:00
|
|
|
import { UserID } from './user';
|
|
|
|
|
2023-11-17 20:51:13 +03:00
|
|
|
/**
|
|
|
|
* Represents type of library items.
|
2023-12-28 14:04:44 +03:00
|
|
|
*/
|
2023-09-11 20:31:54 +03:00
|
|
|
export enum LibraryItemType {
|
|
|
|
RSFORM = 'rsform',
|
|
|
|
OPERATIONS_SCHEMA = 'oss'
|
|
|
|
}
|
|
|
|
|
2024-05-27 20:42:34 +03:00
|
|
|
/**
|
|
|
|
* Represents {@link LibraryItem} identifier type.
|
|
|
|
*/
|
|
|
|
export type LibraryItemID = number;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Represents {@link Version} identifier type.
|
|
|
|
*/
|
|
|
|
export type VersionID = number;
|
|
|
|
|
2024-03-03 22:00:22 +03:00
|
|
|
/**
|
|
|
|
* Represents library item version information.
|
|
|
|
*/
|
|
|
|
export interface IVersionInfo {
|
2024-05-27 20:42:34 +03:00
|
|
|
id: VersionID;
|
2024-03-03 22:00:22 +03:00
|
|
|
version: string;
|
|
|
|
description: string;
|
|
|
|
time_create: string;
|
|
|
|
}
|
|
|
|
|
2024-03-04 19:22:22 +03:00
|
|
|
/**
|
|
|
|
* Represents user data, intended to create or update version metadata in persistent storage.
|
|
|
|
*/
|
|
|
|
export interface IVersionData extends Omit<IVersionInfo, 'id' | 'time_create'> {}
|
|
|
|
|
2023-11-17 20:51:13 +03:00
|
|
|
/**
|
|
|
|
* Represents library item common data typical for all item types.
|
2023-12-28 14:04:44 +03:00
|
|
|
*/
|
2023-09-11 20:31:54 +03:00
|
|
|
export interface ILibraryItem {
|
2024-03-17 19:24:12 +03:00
|
|
|
id: LibraryItemID;
|
2023-12-28 14:04:44 +03:00
|
|
|
item_type: LibraryItemType;
|
|
|
|
title: string;
|
|
|
|
alias: string;
|
|
|
|
comment: string;
|
|
|
|
is_common: boolean;
|
|
|
|
is_canonical: boolean;
|
|
|
|
time_create: string;
|
|
|
|
time_update: string;
|
2024-05-27 20:42:34 +03:00
|
|
|
owner: UserID | null;
|
2023-09-11 20:31:54 +03:00
|
|
|
}
|
|
|
|
|
2023-11-30 02:14:24 +03:00
|
|
|
/**
|
|
|
|
* Represents library item extended data.
|
2023-12-28 14:04:44 +03:00
|
|
|
*/
|
|
|
|
export interface ILibraryItemEx extends ILibraryItem {
|
2024-05-27 20:42:34 +03:00
|
|
|
subscribers: UserID[];
|
|
|
|
editors: UserID[];
|
|
|
|
version?: VersionID;
|
2024-03-03 22:00:22 +03:00
|
|
|
versions: IVersionInfo[];
|
2023-11-30 02:14:24 +03:00
|
|
|
}
|
|
|
|
|
2023-11-17 20:51:13 +03:00
|
|
|
/**
|
|
|
|
* Represents update data for editing {@link ILibraryItem}.
|
2023-12-28 14:04:44 +03:00
|
|
|
*/
|
|
|
|
export interface ILibraryUpdateData extends Omit<ILibraryItem, 'time_create' | 'time_update' | 'id' | 'owner'> {}
|