ConceptPortal-public/rsconcept/frontend/src/models/library.ts

92 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* Module: Models for Library entities and Users.
*/
2023-09-11 20:31:54 +03:00
/**
* Represents user detailed information.
* Some information should only be accesible to authorized users
*/
2023-09-11 20:31:54 +03:00
export interface IUser {
id: number | null
username: string
is_staff: boolean
email: string
first_name: string
last_name: string
}
/**
* Represents CurrentUser information.
*/
2023-09-11 20:31:54 +03:00
export interface ICurrentUser extends Pick<IUser, 'id' | 'username' | 'is_staff'> {
subscriptions: number[]
}
/**
* Represents login data, used to authentificate users.
*/
2023-09-11 20:31:54 +03:00
export interface IUserLoginData extends Pick<IUser, 'username'> {
password: string
}
/**
* Represents signup data, used to create new users.
*/
2023-09-11 20:31:54 +03:00
export interface IUserSignupData extends Omit<IUser, 'is_staff' | 'id'> {
password: string
password2: string
}
/**
* Represents user data, intended to update user profile in persistent storage.
*/
2023-09-11 20:31:54 +03:00
export interface IUserUpdateData extends Omit<IUser, 'is_staff' | 'id'> { }
/**
* Represents user profile for viewing and editing {@link IUser}.
*/
2023-09-11 20:31:54 +03:00
export interface IUserProfile extends Omit<IUser, 'is_staff'> { }
/**
* Represents user reference information.
*/
2023-09-11 20:31:54 +03:00
export interface IUserInfo extends Omit<IUserProfile, 'email'> { }
/**
* Represents data needed to update password for current user.
*/
2023-09-11 20:31:54 +03:00
export interface IUserUpdatePassword {
old_password: string
new_password: string
}
/**
* Represents type of library items.
*/
2023-09-11 20:31:54 +03:00
export enum LibraryItemType {
RSFORM = 'rsform',
OPERATIONS_SCHEMA = 'oss'
}
/**
* Represents library item common data typical for all item types.
*/
2023-09-11 20:31:54 +03:00
export interface ILibraryItem {
id: number
item_type: LibraryItemType
title: string
alias: string
comment: string
is_common: boolean
is_canonical: boolean
time_create: string
time_update: string
owner: number | null
}
/**
* Represents update data for editing {@link ILibraryItem}.
*/
2023-09-11 20:31:54 +03:00
export interface ILibraryUpdateData
extends Omit<ILibraryItem, 'time_create' | 'time_update' | 'id' | 'owner'> {
}