common-tg-service 1.0.28 → 1.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -35,6 +35,9 @@ export declare class Transaction {
35
35
  chatId: string;
36
36
  ip: string;
37
37
  status: string;
38
+ isDeleted: boolean;
39
+ createdAt?: Date;
40
+ updatedAt?: Date;
38
41
  }
39
42
  export declare const TransactionSchema: import("mongoose").Schema<Transaction, import("mongoose").Model<Transaction, any, any, any, Document<unknown, any, Transaction> & Transaction & {
40
43
  _id: import("mongoose").Types.ObjectId;
@@ -15,19 +15,19 @@ let Transaction = class Transaction {
15
15
  };
16
16
  exports.Transaction = Transaction;
17
17
  __decorate([
18
- (0, mongoose_1.Prop)({ required: false }),
18
+ (0, mongoose_1.Prop)({ required: true, unique: true, index: true }),
19
19
  __metadata("design:type", String)
20
20
  ], Transaction.prototype, "transactionId", void 0);
21
21
  __decorate([
22
- (0, mongoose_1.Prop)({ required: false }),
22
+ (0, mongoose_1.Prop)({ required: true }),
23
23
  __metadata("design:type", Number)
24
24
  ], Transaction.prototype, "amount", void 0);
25
25
  __decorate([
26
- (0, mongoose_1.Prop)({ required: false }),
26
+ (0, mongoose_1.Prop)({ required: true }),
27
27
  __metadata("design:type", String)
28
28
  ], Transaction.prototype, "issue", void 0);
29
29
  __decorate([
30
- (0, mongoose_1.Prop)({ required: false }),
30
+ (0, mongoose_1.Prop)({ required: true }),
31
31
  __metadata("design:type", String)
32
32
  ], Transaction.prototype, "description", void 0);
33
33
  __decorate([
@@ -35,31 +35,45 @@ __decorate([
35
35
  __metadata("design:type", String)
36
36
  ], Transaction.prototype, "refundMethod", void 0);
37
37
  __decorate([
38
- (0, mongoose_1.Prop)({ required: false }),
38
+ (0, mongoose_1.Prop)({ required: false, default: 'undefined' }),
39
39
  __metadata("design:type", String)
40
40
  ], Transaction.prototype, "profile", void 0);
41
41
  __decorate([
42
- (0, mongoose_1.Prop)({ required: false }),
42
+ (0, mongoose_1.Prop)({ required: true }),
43
43
  __metadata("design:type", String)
44
44
  ], Transaction.prototype, "chatId", void 0);
45
45
  __decorate([
46
- (0, mongoose_1.Prop)({ required: false }),
46
+ (0, mongoose_1.Prop)({ required: false, default: 'undefined' }),
47
47
  __metadata("design:type", String)
48
48
  ], Transaction.prototype, "ip", void 0);
49
49
  __decorate([
50
- (0, mongoose_1.Prop)({ required: false, default: 'pending' }),
50
+ (0, mongoose_1.Prop)({
51
+ required: true,
52
+ enum: ['pending', 'completed', 'failed', 'cancelled'],
53
+ default: 'pending'
54
+ }),
51
55
  __metadata("design:type", String)
52
56
  ], Transaction.prototype, "status", void 0);
57
+ __decorate([
58
+ (0, mongoose_1.Prop)({ default: false }),
59
+ __metadata("design:type", Boolean)
60
+ ], Transaction.prototype, "isDeleted", void 0);
53
61
  exports.Transaction = Transaction = __decorate([
54
- (0, mongoose_1.Schema)({ collection: 'transactions', versionKey: false, autoIndex: true,
62
+ (0, mongoose_1.Schema)({
55
63
  timestamps: true,
64
+ collection: 'transactions',
56
65
  toJSON: {
57
66
  virtuals: true,
58
- transform: (doc, ret) => {
59
- delete ret._id;
67
+ transform: (_doc, ret) => {
68
+ delete ret.__v;
69
+ return ret;
60
70
  },
61
- },
71
+ }
62
72
  })
63
73
  ], Transaction);
64
74
  exports.TransactionSchema = mongoose_1.SchemaFactory.createForClass(Transaction);
75
+ exports.TransactionSchema.index({ createdAt: 1 });
76
+ exports.TransactionSchema.index({ transactionId: 1 }, { unique: true });
77
+ exports.TransactionSchema.index({ chatId: 1 });
78
+ exports.TransactionSchema.index({ status: 1 });
65
79
  //# sourceMappingURL=transaction.schema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.schema.js","sourceRoot":"","sources":["../../../../src/components/transactions/schemas/transaction.schema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+D;AAaxD,IAAM,WAAW,GAAjB,MAAM,WAAW;CA2BvB,CAAA;AA3BY,kCAAW;AAEtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;kDACJ;AAGtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;2CACX;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;0CACZ;AAGd;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;gDACN;AAGpB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;iDACJ;AAGtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;4CACV;AAGhB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;2CACX;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;uCACf;AAGX;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;2CAC/B;sBA1BJ,WAAW;IATvB,IAAA,iBAAM,EAAC,EAAE,UAAU,EAAE,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI;QACtE,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACtB,OAAO,GAAG,CAAC,GAAG,CAAC;YACjB,CAAC;SACF;KACF,CAAC;GACW,WAAW,CA2BvB;AAEY,QAAA,iBAAiB,GAAG,wBAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC"}
1
+ {"version":3,"file":"transaction.schema.js","sourceRoot":"","sources":["../../../../src/components/transactions/schemas/transaction.schema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+D;AAgBxD,IAAM,WAAW,GAAjB,MAAM,WAAW;CAqCvB,CAAA;AArCY,kCAAW;AAEtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;;kDAC9B;AAGtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;0CACX;AAGd;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;gDACL;AAGpB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;iDACJ;AAGtB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;4CAChC;AAGhB;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;2CACV;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;;uCACrC;AAOX;IALC,IAAA,eAAI,EAAC;QACJ,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,CAAC,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC;QACrD,OAAO,EAAE,SAAS;KACnB,CAAC;;2CACa;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;8CACN;sBAjCR,WAAW;IAXvB,IAAA,iBAAM,EAAC;QACN,UAAU,EAAE,IAAI;QAChB,UAAU,EAAE,cAAc;QAC1B,MAAM,EAAE;YACN,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;gBACvB,OAAO,GAAG,CAAC,GAAG,CAAC;gBACf,OAAO,GAAG,CAAC;YACb,CAAC;SACF;KACF,CAAC;GACW,WAAW,CAqCvB;AAEY,QAAA,iBAAiB,GAAG,wBAAa,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAG3E,yBAAiB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1C,yBAAiB,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAChE,yBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACvC,yBAAiB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC"}
@@ -29,6 +29,7 @@ import { UpdateTransactionDto } from './dto/update-transaction.dto';
29
29
  import { Transaction, TransactionDocument } from './schemas/transaction.schema';
30
30
  export declare class TransactionService {
31
31
  private readonly transactionModel;
32
+ private readonly logger;
32
33
  constructor(transactionModel: Model<TransactionDocument>);
33
34
  create(createTransactionDto: CreateTransactionDto): Promise<Transaction>;
34
35
  findOne(id: string): Promise<Transaction>;
@@ -11,20 +11,32 @@ var __metadata = (this && this.__metadata) || function (k, v) {
11
11
  var __param = (this && this.__param) || function (paramIndex, decorator) {
12
12
  return function (target, key) { decorator(target, key, paramIndex); }
13
13
  };
14
+ var TransactionService_1;
14
15
  Object.defineProperty(exports, "__esModule", { value: true });
15
16
  exports.TransactionService = void 0;
16
17
  const common_1 = require("@nestjs/common");
17
18
  const mongoose_1 = require("@nestjs/mongoose");
18
19
  const mongoose_2 = require("mongoose");
19
20
  const transaction_schema_1 = require("./schemas/transaction.schema");
20
- let TransactionService = class TransactionService {
21
+ let TransactionService = TransactionService_1 = class TransactionService {
21
22
  constructor(transactionModel) {
22
23
  this.transactionModel = transactionModel;
24
+ this.logger = new common_1.Logger(TransactionService_1.name);
23
25
  }
24
26
  async create(createTransactionDto) {
25
- console.log('createTransactionDto', createTransactionDto);
26
- const newTransaction = new this.transactionModel(createTransactionDto);
27
- return await newTransaction.save();
27
+ this.logger.debug('Creating new transaction with data:', createTransactionDto);
28
+ try {
29
+ const newTransaction = new this.transactionModel(createTransactionDto);
30
+ this.logger.debug('Transaction model created:', newTransaction.toObject());
31
+ const savedTransaction = await newTransaction.save();
32
+ this.logger.debug('Transaction saved successfully:', savedTransaction.toObject());
33
+ return savedTransaction;
34
+ }
35
+ catch (error) {
36
+ this.logger.error('Error saving transaction:', error);
37
+ this.logger.error('Transaction data that failed:', createTransactionDto);
38
+ throw error;
39
+ }
28
40
  }
29
41
  async findOne(id) {
30
42
  const transaction = await this.transactionModel.findById(id).exec();
@@ -70,7 +82,7 @@ let TransactionService = class TransactionService {
70
82
  }
71
83
  };
72
84
  exports.TransactionService = TransactionService;
73
- exports.TransactionService = TransactionService = __decorate([
85
+ exports.TransactionService = TransactionService = TransactionService_1 = __decorate([
74
86
  (0, common_1.Injectable)(),
75
87
  __param(0, (0, mongoose_1.InjectModel)(transaction_schema_1.Transaction.name)),
76
88
  __metadata("design:paramtypes", [mongoose_2.Model])
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../../src/components/transactions/transaction.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transaction.service.js","sourceRoot":"","sources":["../../../src/components/transactions/transaction.service.ts"],"names":[],"mappings":"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"}