import { BelongsTo, Column, DataType, ForeignKey, Index, Model, Table } from 'sequelize-typescript'; import { NftReserveStatus } from '../utils/enums'; import { Address } from './address'; import { Nft } from './nft'; import { NftRedelegation } from './nftRedelegation'; import { RedelegationPartNft } from './redelegationPartNft'; import { StakeNft } from './stakeNft'; import { UndelegationNft } from './undelegationNft'; @Table export class NftReserve extends Model { @Index({ name: 'nftReserve-nftId-index', using: 'HASH', }) @ForeignKey(() => Nft) @Column(DataType.INTEGER) nftId: number; @Index({ name: 'nftReserve-stakeNft-index', using: 'HASH', }) @ForeignKey(() => StakeNft) @Column(DataType.INTEGER) nftStakeId: number; @Index({ name: 'nftReserve-redelegationNft-index', using: 'HASH', }) @ForeignKey(() => NftRedelegation) @Column(DataType.INTEGER) nftRedelegetionId: number; @Index({ name: 'nftReserve-redelegationPart-index', using: 'HASH', }) @ForeignKey(() => RedelegationPartNft) @Column(DataType.INTEGER) nftRedelegetionPartId: number; @Index({ name: 'nftReserve-nftUndelegation-index', using: 'HASH', }) @ForeignKey(() => UndelegationNft) @Column(DataType.INTEGER) nftUndelegationId: number; @Column(DataType.INTEGER) subTokenId: number; @Column(DataType.DECIMAL) reserve: string; @Column({ type: DataType.ENUM({ values: Object.values(NftReserveStatus) }), defaultValue: NftReserveStatus.owned, }) status: NftReserveStatus; @BelongsTo(() => Nft, 'nftId') nft: Nft; @Index({ name: 'nftReserve-addressId-index', using: 'HASH', }) @ForeignKey(() => Address) @Column({ type: DataType.INTEGER, allowNull: false }) addressId: number; @BelongsTo(() => Address) address: Address; @BelongsTo(() => StakeNft) nftStake: StakeNft; @BelongsTo(() => NftRedelegation) nftRedelegation: NftRedelegation; @BelongsTo(() => RedelegationPartNft) nftRedelegetionPart: RedelegationPartNft; @BelongsTo(() => UndelegationNft) nftUndelegation: UndelegationNft; }