import { BelongsTo, Column, DataType, ForeignKey, Index, Model, Table } from 'sequelize-typescript'; import { TokenType } from '../utils/enums'; import { TokenTypeEvent } from '../utils/types'; import { EvmAccount } from './evmAccount'; import { EvmContract } from './evmContract'; import { EvmReceipt } from './evmReceipt'; import { EvmToken } from './evmToken'; import { EvmTransaction } from './evmTransaction'; @Table export class EvmTokenEvent extends Model { @Index({ name: 'evmTokenE-timestamp-index', using: 'BTREE', }) @Column({ type: DataType.STRING, defaultValue: Date.now().toString() }) timestamp: string; @Column({ type: DataType.STRING, allowNull: false }) event: TokenTypeEvent; @Column({ type: DataType.STRING, allowNull: false }) tokenType: TokenType; @Column(DataType.STRING) amount: string; // relations M-1 @ForeignKey(() => EvmAccount) @Column(DataType.INTEGER) fromAccountId: number; @ForeignKey(() => EvmAccount) @Column(DataType.INTEGER) toAccountId: number; @ForeignKey(() => EvmToken) @Column(DataType.INTEGER) evmTokenId: number; @ForeignKey(() => EvmContract) @Column(DataType.INTEGER) evmContractId: number; @ForeignKey(() => EvmTransaction) @Column(DataType.INTEGER) evmTransactionId: number; @ForeignKey(() => EvmReceipt) @Column(DataType.INTEGER) evmReceiptId: number; /** For ERC721 and ERC1155*/ @Column(DataType.STRING) tokenId: string; @Column(DataType.BOOLEAN) approved: boolean; @ForeignKey(() => EvmAccount) @Column(DataType.INTEGER) operatorAccountId: number; /** Just for URI event ERC1155*/ @Column(DataType.STRING) uriValue: string; @BelongsTo(() => EvmAccount, 'fromAccountId') evmAccountFrom: EvmAccount; @BelongsTo(() => EvmAccount, 'toAccountId') evmAccountTo: EvmAccount; @BelongsTo(() => EvmAccount, 'operatorAccountId') evmAccountOperator: EvmAccount; @BelongsTo(() => EvmToken, 'evmTokenId') evmToken: EvmToken; @BelongsTo(() => EvmContract, 'evmContractId') evmContract: EvmContract; @BelongsTo(() => EvmTransaction, 'evmTransactionId') evmTransaction: EvmTransaction; @BelongsTo(() => EvmReceipt, 'evmReceiptId') evmReceipt: EvmReceipt; }