import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import {
  TransactionCancellationReason,
  TransactionState,
  TransactionStatus,
} from '../types/enums';
import { HydratedDocument } from 'mongoose';

export type PaymeTransactionDocument = HydratedDocument<PaymeTransaction>;

@Schema()
export class PaymeTransaction {
  @Prop()
  amount: number;

  @Prop({ type: Object })
  account: object;

  @Prop()
  create_time: Date;

  @Prop()
  perform_time?: Date;

  @Prop()
  cancel_time?: Date;

  @Prop({ type: String, unique: true })
  trans_id: string;

  @Prop({
    type: Number,
    enum: TransactionState,
    default: TransactionState.Initial,
  })
  state: TransactionState;

  @Prop({
    type: String,
    enum: TransactionStatus,
    default: TransactionStatus.PENDING,
  })
  status: TransactionStatus;

  @Prop({ type: Number, enum: TransactionCancellationReason })
  reason?: TransactionCancellationReason;
}

export const PaymeTransactionSchema = SchemaFactory.createForClass(PaymeTransaction);
