@eventista/ticketing-common 1.0.39 → 1.0.41

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.
package/README.md CHANGED
@@ -1,20 +1,20 @@
1
- # 1.Lệnh build
2
- ```bash
3
- npm run build
4
- ```
5
-
6
- # 2.Lệnh Push lên NPM
7
- ```bash
8
- npm publish
9
- ```
10
-
11
- # Tên thư viện
12
- @eventista/ticketing-common
13
-
14
- # Lệnh cài đặt thư viện
15
- ```bash
16
- npm install @eventista/ticketing-common
17
- ```
18
-
19
- events => eventCalendar.calendarId = eventCalendar.calendarCode
1
+ # 1.Lệnh build
2
+ ```bash
3
+ npm run build
4
+ ```
5
+
6
+ # 2.Lệnh Push lên NPM
7
+ ```bash
8
+ npm publish
9
+ ```
10
+
11
+ # Tên thư viện
12
+ @eventista/ticketing-common
13
+
14
+ # Lệnh cài đặt thư viện
15
+ ```bash
16
+ npm install @eventista/ticketing-common
17
+ ```
18
+
19
+ events => eventCalendar.calendarId = eventCalendar.calendarCode
20
20
  events =>eventCode = eventId
@@ -160,12 +160,12 @@ let RedisService = RedisService_1 = class RedisService {
160
160
  }
161
161
  }
162
162
  async releaseLock(lockKey, value) {
163
- const script = `
164
- if redis.call("get", KEYS[1]) == ARGV[1] then
165
- return redis.call("del", KEYS[1])
166
- else
167
- return 0
168
- end
163
+ const script = `
164
+ if redis.call("get", KEYS[1]) == ARGV[1] then
165
+ return redis.call("del", KEYS[1])
166
+ else
167
+ return 0
168
+ end
169
169
  `;
170
170
  const result = await this.redis.eval(script, 1, lockKey, value);
171
171
  return result === 1;
@@ -7,7 +7,7 @@ export declare class BaseRepository<T extends Document> implements IBaseReposito
7
7
  findOneOrFail(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T>;
8
8
  find(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T[]>;
9
9
  create(createDto: Partial<T>): Promise<T>;
10
- createMany(createDtos: Partial<T>[]): Promise<T[]>;
10
+ insertMany(createDtos: Partial<T>[]): Promise<T[]>;
11
11
  findOneAndUpdate(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T | null>;
12
12
  findOneAndUpdateOrFail(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T>;
13
13
  updateMany(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>): Promise<{
@@ -4,7 +4,7 @@ export interface IBaseRepository<T extends Document> {
4
4
  findOneOrFail(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T>;
5
5
  find(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T[]>;
6
6
  create(createDto: Partial<T>): Promise<T>;
7
- createMany(createDtos: Partial<T>[]): Promise<T[]>;
7
+ insertMany(createDtos: Partial<T>[]): Promise<T[]>;
8
8
  findOneAndUpdate(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T | null>;
9
9
  findOneAndUpdateOrFail(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T>;
10
10
  updateMany(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>): Promise<{
@@ -23,7 +23,7 @@ class BaseRepository {
23
23
  const newDocument = new this.model(createDto);
24
24
  return newDocument.save();
25
25
  }
26
- async createMany(createDtos) {
26
+ async insertMany(createDtos) {
27
27
  return this.model.insertMany(createDtos);
28
28
  }
29
29
  async findOneAndUpdate(filterQuery, updateQuery, options = { new: true }) {
@@ -8,7 +8,7 @@ export declare class BaseService<T extends Document> implements IBaseService<T>
8
8
  findOneOrFail(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T>;
9
9
  find(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T[]>;
10
10
  create(createDto: Partial<T>): Promise<T>;
11
- createMany(createDtos: Partial<T>[]): Promise<T[]>;
11
+ insertMany(createDtos: Partial<T>[]): Promise<T[]>;
12
12
  update(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T | null>;
13
13
  updateOrFail(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T>;
14
14
  updateMany(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>): Promise<{
@@ -4,7 +4,7 @@ export interface IBaseService<T extends Document> {
4
4
  findOneOrFail(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T>;
5
5
  find(filterQuery: FilterQuery<T>, projection?: Record<string, unknown>, options?: QueryOptions): Promise<T[]>;
6
6
  create(createDto: Partial<T>): Promise<T>;
7
- createMany(createDtos: Partial<T>[]): Promise<T[]>;
7
+ insertMany(createDtos: Partial<T>[]): Promise<T[]>;
8
8
  update(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T | null>;
9
9
  updateOrFail(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>, options?: QueryOptions): Promise<T>;
10
10
  updateMany(filterQuery: FilterQuery<T>, updateQuery: UpdateQuery<T>): Promise<{
@@ -17,8 +17,8 @@ class BaseService {
17
17
  async create(createDto) {
18
18
  return this.repository.create(createDto);
19
19
  }
20
- async createMany(createDtos) {
21
- return this.repository.createMany(createDtos);
20
+ async insertMany(createDtos) {
21
+ return this.repository.insertMany(createDtos);
22
22
  }
23
23
  async update(filterQuery, updateQuery, options = { new: true }) {
24
24
  return this.repository.findOneAndUpdate(filterQuery, updateQuery, options);
@@ -0,0 +1,27 @@
1
+ export interface ITickets {
2
+ _id?: string;
3
+ calendarId: string;
4
+ eventId: string;
5
+ rowId: string;
6
+ zoneId: string;
7
+ code?: string;
8
+ status: string;
9
+ checkin?: boolean;
10
+ customerName?: string;
11
+ customerEmail?: string;
12
+ customerPhone?: string;
13
+ customerNote?: string;
14
+ customerExtraData?: string;
15
+ orderId?: string;
16
+ ticketClassId: string;
17
+ position: number;
18
+ generateCode?: string;
19
+ holdAt?: number;
20
+ soldAt?: number;
21
+ paymentGateway?: string;
22
+ checkedInBy?: string;
23
+ checkinTime?: Date;
24
+ createdAt?: Date;
25
+ updatedAt?: Date;
26
+ isDeleted?: boolean;
27
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=tickets.interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.interfaces.js","sourceRoot":"","sources":["../../../src/schemas/tickets/tickets.interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ import { HydratedDocument } from 'mongoose';
2
+ import { BaseDocument, BaseSchema } from '../index';
3
+ export type TicketsDocument = HydratedDocument<Tickets> & BaseDocument;
4
+ export declare class Tickets extends BaseSchema {
5
+ calendarId: string;
6
+ eventId: string;
7
+ rowId: string;
8
+ zoneId: string;
9
+ code: string;
10
+ status: string;
11
+ checkin: boolean;
12
+ customerName: string;
13
+ customerEmail: string;
14
+ customerPhone: string;
15
+ customerNote: string;
16
+ customerExtraData: string;
17
+ orderId: string;
18
+ ticketClassId: string;
19
+ position: number;
20
+ generateCode: string;
21
+ holdAt: number;
22
+ soldAt: number;
23
+ paymentGateway: string;
24
+ checkedInBy: string;
25
+ checkinTime: Date;
26
+ }
27
+ export declare const TicketsSchema: import("mongoose").Schema<Tickets, import("mongoose").Model<Tickets, any, any, any, import("mongoose").Document<unknown, any, Tickets, any> & Tickets & {
28
+ _id: import("mongoose").Types.ObjectId;
29
+ } & {
30
+ __v: number;
31
+ }, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, Tickets, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<Tickets>, {}> & import("mongoose").FlatRecord<Tickets> & {
32
+ _id: import("mongoose").Types.ObjectId;
33
+ } & {
34
+ __v: number;
35
+ }>;
@@ -0,0 +1,225 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.TicketsSchema = exports.Tickets = void 0;
13
+ const mongoose_1 = require("@nestjs/mongoose");
14
+ const index_1 = require("../index");
15
+ let Tickets = class Tickets extends index_1.BaseSchema {
16
+ };
17
+ exports.Tickets = Tickets;
18
+ __decorate([
19
+ (0, mongoose_1.Prop)({
20
+ type: String,
21
+ required: true,
22
+ index: {
23
+ type: 'global',
24
+ name: 'calendarIdIndex',
25
+ project: true,
26
+ },
27
+ }),
28
+ __metadata("design:type", String)
29
+ ], Tickets.prototype, "calendarId", void 0);
30
+ __decorate([
31
+ (0, mongoose_1.Prop)({
32
+ type: String,
33
+ required: true,
34
+ index: {
35
+ type: 'global',
36
+ name: 'eventIdIndex',
37
+ project: true,
38
+ },
39
+ }),
40
+ __metadata("design:type", String)
41
+ ], Tickets.prototype, "eventId", void 0);
42
+ __decorate([
43
+ (0, mongoose_1.Prop)({
44
+ type: String,
45
+ required: true,
46
+ index: {
47
+ type: 'global',
48
+ name: 'rowIdIndex',
49
+ project: true,
50
+ },
51
+ }),
52
+ __metadata("design:type", String)
53
+ ], Tickets.prototype, "rowId", void 0);
54
+ __decorate([
55
+ (0, mongoose_1.Prop)({
56
+ type: String,
57
+ required: true,
58
+ index: {
59
+ type: 'global',
60
+ name: 'zoneIdIndex',
61
+ project: true,
62
+ },
63
+ }),
64
+ __metadata("design:type", String)
65
+ ], Tickets.prototype, "zoneId", void 0);
66
+ __decorate([
67
+ (0, mongoose_1.Prop)({
68
+ type: String,
69
+ required: false,
70
+ index: {
71
+ type: 'global',
72
+ name: 'codeIndex',
73
+ project: true,
74
+ },
75
+ }),
76
+ __metadata("design:type", String)
77
+ ], Tickets.prototype, "code", void 0);
78
+ __decorate([
79
+ (0, mongoose_1.Prop)({
80
+ type: String,
81
+ required: true,
82
+ default: 'idle',
83
+ index: {
84
+ type: 'global',
85
+ name: 'statusIndex',
86
+ project: true,
87
+ },
88
+ }),
89
+ __metadata("design:type", String)
90
+ ], Tickets.prototype, "status", void 0);
91
+ __decorate([
92
+ (0, mongoose_1.Prop)({
93
+ type: Boolean,
94
+ required: false,
95
+ default: false,
96
+ }),
97
+ __metadata("design:type", Boolean)
98
+ ], Tickets.prototype, "checkin", void 0);
99
+ __decorate([
100
+ (0, mongoose_1.Prop)({
101
+ type: String,
102
+ required: false,
103
+ index: {
104
+ type: 'global',
105
+ name: 'customerNameIndex',
106
+ project: true,
107
+ },
108
+ }),
109
+ __metadata("design:type", String)
110
+ ], Tickets.prototype, "customerName", void 0);
111
+ __decorate([
112
+ (0, mongoose_1.Prop)({
113
+ type: String,
114
+ required: false,
115
+ index: {
116
+ type: 'global',
117
+ name: 'customerEmailIndex',
118
+ project: true,
119
+ },
120
+ }),
121
+ __metadata("design:type", String)
122
+ ], Tickets.prototype, "customerEmail", void 0);
123
+ __decorate([
124
+ (0, mongoose_1.Prop)({
125
+ type: String,
126
+ required: false,
127
+ index: {
128
+ type: 'global',
129
+ name: 'customerPhoneIndex',
130
+ project: true,
131
+ },
132
+ }),
133
+ __metadata("design:type", String)
134
+ ], Tickets.prototype, "customerPhone", void 0);
135
+ __decorate([
136
+ (0, mongoose_1.Prop)({
137
+ type: String,
138
+ required: false,
139
+ }),
140
+ __metadata("design:type", String)
141
+ ], Tickets.prototype, "customerNote", void 0);
142
+ __decorate([
143
+ (0, mongoose_1.Prop)({
144
+ type: String,
145
+ required: false,
146
+ }),
147
+ __metadata("design:type", String)
148
+ ], Tickets.prototype, "customerExtraData", void 0);
149
+ __decorate([
150
+ (0, mongoose_1.Prop)({
151
+ type: String,
152
+ required: false,
153
+ index: {
154
+ type: 'global',
155
+ name: 'orderIndex',
156
+ project: true,
157
+ },
158
+ }),
159
+ __metadata("design:type", String)
160
+ ], Tickets.prototype, "orderId", void 0);
161
+ __decorate([
162
+ (0, mongoose_1.Prop)({
163
+ type: String,
164
+ required: true,
165
+ index: {
166
+ type: 'global',
167
+ name: 'ticketClassIdIndex',
168
+ project: true,
169
+ },
170
+ }),
171
+ __metadata("design:type", String)
172
+ ], Tickets.prototype, "ticketClassId", void 0);
173
+ __decorate([
174
+ (0, mongoose_1.Prop)({
175
+ type: Number,
176
+ rangeKey: true,
177
+ }),
178
+ __metadata("design:type", Number)
179
+ ], Tickets.prototype, "position", void 0);
180
+ __decorate([
181
+ (0, mongoose_1.Prop)({
182
+ type: String,
183
+ }),
184
+ __metadata("design:type", String)
185
+ ], Tickets.prototype, "generateCode", void 0);
186
+ __decorate([
187
+ (0, mongoose_1.Prop)({
188
+ type: Number,
189
+ required: false,
190
+ }),
191
+ __metadata("design:type", Number)
192
+ ], Tickets.prototype, "holdAt", void 0);
193
+ __decorate([
194
+ (0, mongoose_1.Prop)({
195
+ type: Number,
196
+ required: false,
197
+ }),
198
+ __metadata("design:type", Number)
199
+ ], Tickets.prototype, "soldAt", void 0);
200
+ __decorate([
201
+ (0, mongoose_1.Prop)({
202
+ type: String,
203
+ required: false,
204
+ }),
205
+ __metadata("design:type", String)
206
+ ], Tickets.prototype, "paymentGateway", void 0);
207
+ __decorate([
208
+ (0, mongoose_1.Prop)(),
209
+ __metadata("design:type", String)
210
+ ], Tickets.prototype, "checkedInBy", void 0);
211
+ __decorate([
212
+ (0, mongoose_1.Prop)(),
213
+ __metadata("design:type", Date)
214
+ ], Tickets.prototype, "checkinTime", void 0);
215
+ exports.Tickets = Tickets = __decorate([
216
+ (0, mongoose_1.Schema)({
217
+ collection: 'tickets',
218
+ ...index_1.defaultSchemaOptions,
219
+ })
220
+ ], Tickets);
221
+ exports.TicketsSchema = mongoose_1.SchemaFactory.createForClass(Tickets);
222
+ (0, index_1.addUpdateHooks)(exports.TicketsSchema);
223
+ (0, index_1.addSoftDeleteHooks)(exports.TicketsSchema);
224
+ exports.TicketsSchema.index({ eventId: 1, type: 1, referenceId: 1 }, { unique: true });
225
+ //# sourceMappingURL=tickets.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tickets.schema.js","sourceRoot":"","sources":["../../../src/schemas/tickets/tickets.schema.ts"],"names":[],"mappings":"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"}