import { BelongsTo, Column, DataType, ForeignKey, HasMany, Index, Model, Table, } from 'sequelize-typescript'; import { Address } from './address'; import { Balance } from './balance'; import { Block } from './block'; import { CoinContractAddress } from './coinContractAddress'; import { MultisigTx } from './multisigTx'; import { Nft } from './nft'; import { History_1d } from './priceHistory/history1d'; import { History_1h } from './priceHistory/history1h'; import { Stake } from './stake'; import { StakeNft } from './stakeNft'; import { Tx } from './tx'; @Table({ timestamps: true }) export class Coin extends Model { @Index({ name: 'coin-symbol-index', using: 'BTREE', }) @Column({ type: DataType.STRING, unique: true }) symbol: string; @Index({ name: 'coin-title-index', using: 'BTREE', }) @Column(DataType.STRING) title: string; @Column(DataType.DECIMAL) volume: string; @Column(DataType.DECIMAL) reserve: string; @Column(DataType.INTEGER) crr: number; @Column({ type: DataType.DECIMAL, defaultValue: 0 }) delegated: string; @Column(DataType.DECIMAL) priceBase: string; @Column(DataType.DECIMAL) limitVolume: string; @Column(DataType.DECIMAL) minVolume: string; @Column(DataType.DECIMAL) priceDelegate: string; @ForeignKey(() => Address) @Column(DataType.INTEGER) creatorId: number; @BelongsTo(() => Address) creator: Address; @Index({ name: 'coin-txId-index', using: 'HASH', }) @ForeignKey(() => Tx) @Column(DataType.INTEGER) txId: number; @BelongsTo(() => Tx) initTx: Tx; @Index({ name: 'coin-blockId-index', using: 'BTREE', }) @ForeignKey(() => Block) @Column(DataType.INTEGER) blockId: number; @BelongsTo(() => Block) block: Block; @Column(DataType.TEXT) avatar: string; @Column(DataType.STRING) contractAddress: string; @Column({ type: DataType.DECIMAL, defaultValue: '0' }) burn: string; @Column({ type: DataType.DECIMAL, defaultValue: '0' }) burnBase: string; @HasMany(() => Stake) stakes: Stake[]; @HasMany(() => History_1d) history1d: History_1d[]; @HasMany(() => History_1h) history1h: History_1h[]; @HasMany(() => Balance) balances: Balance[]; @HasMany(() => StakeNft) stakeNfts: StakeNft[]; @HasMany(() => CoinContractAddress) coin: CoinContractAddress[]; @HasMany(() => Nft) nfts: Nft[]; }