clhq-postgres-module 1.1.0-alpha.100
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/dist/config/data-source.d.ts +3 -0
- package/dist/config/data-source.js +27 -0
- package/dist/config/typeorm.config.d.ts +2 -0
- package/dist/config/typeorm.config.js +27 -0
- package/dist/entities/ai-usage.entity.d.ts +15 -0
- package/dist/entities/ai-usage.entity.js +67 -0
- package/dist/entities/asset.entity.d.ts +48 -0
- package/dist/entities/asset.entity.js +180 -0
- package/dist/entities/audio-waveform.entity.d.ts +27 -0
- package/dist/entities/audio-waveform.entity.js +64 -0
- package/dist/entities/auth-session.entity.d.ts +13 -0
- package/dist/entities/auth-session.entity.js +61 -0
- package/dist/entities/comment.entity.d.ts +16 -0
- package/dist/entities/comment.entity.js +72 -0
- package/dist/entities/credit-allocation.entity.d.ts +23 -0
- package/dist/entities/credit-allocation.entity.js +91 -0
- package/dist/entities/credit-consumption-log.entity.d.ts +32 -0
- package/dist/entities/credit-consumption-log.entity.js +127 -0
- package/dist/entities/credit-transaction.entity.d.ts +20 -0
- package/dist/entities/credit-transaction.entity.js +89 -0
- package/dist/entities/editor-project.entity.d.ts +60 -0
- package/dist/entities/editor-project.entity.js +173 -0
- package/dist/entities/effect.entity.d.ts +20 -0
- package/dist/entities/effect.entity.js +74 -0
- package/dist/entities/index.d.ts +28 -0
- package/dist/entities/index.js +46 -0
- package/dist/entities/invite.entity.d.ts +20 -0
- package/dist/entities/invite.entity.js +85 -0
- package/dist/entities/payment-transaction.entity.d.ts +27 -0
- package/dist/entities/payment-transaction.entity.js +91 -0
- package/dist/entities/plan.entity.d.ts +19 -0
- package/dist/entities/plan.entity.js +79 -0
- package/dist/entities/referral-event.entity.d.ts +41 -0
- package/dist/entities/referral-event.entity.js +170 -0
- package/dist/entities/reward-rule.entity.d.ts +13 -0
- package/dist/entities/reward-rule.entity.js +63 -0
- package/dist/entities/stripe-webhook.entity.d.ts +17 -0
- package/dist/entities/stripe-webhook.entity.js +67 -0
- package/dist/entities/subscription-plan.entity.d.ts +37 -0
- package/dist/entities/subscription-plan.entity.js +160 -0
- package/dist/entities/subscription-usage.entity.d.ts +14 -0
- package/dist/entities/subscription-usage.entity.js +65 -0
- package/dist/entities/user-onboarding.entity.d.ts +10 -0
- package/dist/entities/user-onboarding.entity.js +49 -0
- package/dist/entities/user-profile.entity.d.ts +39 -0
- package/dist/entities/user-profile.entity.js +165 -0
- package/dist/entities/user-subscription.entity.d.ts +46 -0
- package/dist/entities/user-subscription.entity.js +151 -0
- package/dist/entities/user.entity.d.ts +41 -0
- package/dist/entities/user.entity.js +163 -0
- package/dist/entities/video-filmstrip.entity.d.ts +29 -0
- package/dist/entities/video-filmstrip.entity.js +64 -0
- package/dist/entities/video-render.entity.d.ts +21 -0
- package/dist/entities/video-render.entity.js +79 -0
- package/dist/entities/video-subtitle.entity.d.ts +28 -0
- package/dist/entities/video-subtitle.entity.js +68 -0
- package/dist/entities/video-transcode.entity.d.ts +16 -0
- package/dist/entities/video-transcode.entity.js +64 -0
- package/dist/entities/workspace-member.entity.d.ts +19 -0
- package/dist/entities/workspace-member.entity.js +70 -0
- package/dist/entities/workspace.entity.d.ts +17 -0
- package/dist/entities/workspace.entity.js +75 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +21 -0
- package/dist/postgres.module.d.ts +2 -0
- package/dist/postgres.module.js +63 -0
- package/dist/repositories/ai-usage.repository.d.ts +12 -0
- package/dist/repositories/ai-usage.repository.js +56 -0
- package/dist/repositories/asset.repository.d.ts +22 -0
- package/dist/repositories/asset.repository.js +128 -0
- package/dist/repositories/audio-waveform.repository.d.ts +24 -0
- package/dist/repositories/audio-waveform.repository.js +57 -0
- package/dist/repositories/auth-session.repository.d.ts +10 -0
- package/dist/repositories/auth-session.repository.js +46 -0
- package/dist/repositories/base.repository.d.ts +18 -0
- package/dist/repositories/base.repository.js +53 -0
- package/dist/repositories/comment.repository.d.ts +14 -0
- package/dist/repositories/comment.repository.js +76 -0
- package/dist/repositories/credit-transaction.repository.d.ts +9 -0
- package/dist/repositories/credit-transaction.repository.js +49 -0
- package/dist/repositories/editor-project.repository.d.ts +31 -0
- package/dist/repositories/editor-project.repository.js +193 -0
- package/dist/repositories/effect.repository.d.ts +10 -0
- package/dist/repositories/effect.repository.js +47 -0
- package/dist/repositories/index.d.ts +26 -0
- package/dist/repositories/index.js +55 -0
- package/dist/repositories/invite.repository.d.ts +12 -0
- package/dist/repositories/invite.repository.js +60 -0
- package/dist/repositories/payment-transaction.repository.d.ts +10 -0
- package/dist/repositories/payment-transaction.repository.js +49 -0
- package/dist/repositories/plan.repository.d.ts +10 -0
- package/dist/repositories/plan.repository.js +48 -0
- package/dist/repositories/referral-event.repository.d.ts +37 -0
- package/dist/repositories/referral-event.repository.js +154 -0
- package/dist/repositories/repository.module.d.ts +2 -0
- package/dist/repositories/repository.module.js +77 -0
- package/dist/repositories/reward-rule.repository.d.ts +10 -0
- package/dist/repositories/reward-rule.repository.js +48 -0
- package/dist/repositories/stripe-webhook.repository.d.ts +10 -0
- package/dist/repositories/stripe-webhook.repository.js +53 -0
- package/dist/repositories/subscription-plan.repository.d.ts +15 -0
- package/dist/repositories/subscription-plan.repository.js +77 -0
- package/dist/repositories/subscription-usage.repository.d.ts +9 -0
- package/dist/repositories/subscription-usage.repository.js +50 -0
- package/dist/repositories/user-onboarding.repository.d.ts +10 -0
- package/dist/repositories/user-onboarding.repository.js +56 -0
- package/dist/repositories/user-profile.repository.d.ts +9 -0
- package/dist/repositories/user-profile.repository.js +41 -0
- package/dist/repositories/user-subscription.repository.d.ts +16 -0
- package/dist/repositories/user-subscription.repository.js +90 -0
- package/dist/repositories/user.repository.d.ts +17 -0
- package/dist/repositories/user.repository.js +89 -0
- package/dist/repositories/video-filmstrip.repository.d.ts +24 -0
- package/dist/repositories/video-filmstrip.repository.js +57 -0
- package/dist/repositories/video-render.repository.d.ts +28 -0
- package/dist/repositories/video-render.repository.js +63 -0
- package/dist/repositories/video-transcode.repository.d.ts +23 -0
- package/dist/repositories/video-transcode.repository.js +52 -0
- package/dist/repositories/workspace-member.repository.d.ts +13 -0
- package/dist/repositories/workspace-member.repository.js +79 -0
- package/dist/repositories/workspace.repository.d.ts +13 -0
- package/dist/repositories/workspace.repository.js +64 -0
- package/package.json +65 -0
|
@@ -0,0 +1,154 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ReferralEventRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const base_repository_1 = require("./base.repository");
|
|
20
|
+
const referral_event_entity_1 = require("../entities/referral-event.entity");
|
|
21
|
+
let ReferralEventRepository = class ReferralEventRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(repository) {
|
|
23
|
+
super(repository);
|
|
24
|
+
this.repository = repository;
|
|
25
|
+
}
|
|
26
|
+
async findByReferrerId(referrerId, options) {
|
|
27
|
+
const query = this.repository
|
|
28
|
+
.createQueryBuilder('re')
|
|
29
|
+
.where('re.referrer_id = :referrerId', { referrerId })
|
|
30
|
+
.leftJoinAndSelect('re.referred', 'referred')
|
|
31
|
+
.orderBy('re.signup_at', 'DESC');
|
|
32
|
+
if (options?.status) {
|
|
33
|
+
query.andWhere('re.status = :status', { status: options.status });
|
|
34
|
+
}
|
|
35
|
+
if (options?.limit) {
|
|
36
|
+
query.take(options.limit);
|
|
37
|
+
}
|
|
38
|
+
if (options?.offset) {
|
|
39
|
+
query.skip(options.offset);
|
|
40
|
+
}
|
|
41
|
+
return query.getMany();
|
|
42
|
+
}
|
|
43
|
+
async findByReferredId(referredId) {
|
|
44
|
+
return this.repository.find({
|
|
45
|
+
where: { referredId },
|
|
46
|
+
relations: ['referrer'],
|
|
47
|
+
order: { signupAt: 'DESC' },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async findByReferralPair(referrerId, referredId) {
|
|
51
|
+
return this.repository.findOne({
|
|
52
|
+
where: { referrerId, referredId },
|
|
53
|
+
relations: ['referrer', 'referred'],
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
async findByReferralCode(referralCode) {
|
|
57
|
+
return this.repository.find({
|
|
58
|
+
where: { referralCode },
|
|
59
|
+
relations: ['referrer', 'referred'],
|
|
60
|
+
order: { signupAt: 'DESC' },
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
async countConversionsByReferrer(referrerId) {
|
|
64
|
+
return this.repository.count({
|
|
65
|
+
where: {
|
|
66
|
+
referrerId,
|
|
67
|
+
status: referral_event_entity_1.ReferralStatus.CONVERTED,
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
async countSignupsByReferrer(referrerId) {
|
|
72
|
+
return this.repository.count({
|
|
73
|
+
where: { referrerId },
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
async getReferralStats(referrerId) {
|
|
77
|
+
const stats = await this.repository
|
|
78
|
+
.createQueryBuilder('re')
|
|
79
|
+
.select([
|
|
80
|
+
'COUNT(*) as totalSignups',
|
|
81
|
+
'COUNT(CASE WHEN re.status = :converted THEN 1 END) as totalConversions',
|
|
82
|
+
'SUM(re.referrer_reward_amount) as totalRewardAmount',
|
|
83
|
+
])
|
|
84
|
+
.where('re.referrer_id = :referrerId', { referrerId })
|
|
85
|
+
.setParameters({ converted: referral_event_entity_1.ReferralStatus.CONVERTED })
|
|
86
|
+
.getRawOne();
|
|
87
|
+
const totalSignups = Number(stats.totalSignups) || 0;
|
|
88
|
+
const totalConversions = Number(stats.totalConversions) || 0;
|
|
89
|
+
const conversionRate = totalSignups > 0 ? (totalConversions / totalSignups) * 100 : 0;
|
|
90
|
+
const totalRewardAmount = Number(stats.totalRewardAmount) || 0;
|
|
91
|
+
return {
|
|
92
|
+
totalSignups,
|
|
93
|
+
totalConversions,
|
|
94
|
+
conversionRate,
|
|
95
|
+
totalRewardAmount,
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
async updateStatus(id, status, additionalData) {
|
|
99
|
+
const updateData = { status };
|
|
100
|
+
if (additionalData) {
|
|
101
|
+
Object.assign(updateData, additionalData);
|
|
102
|
+
}
|
|
103
|
+
return this.update(id, updateData);
|
|
104
|
+
}
|
|
105
|
+
async updateRewardStatus(id, rewardStatus, rewardAmount, rewardProcessedAt) {
|
|
106
|
+
const updateData = { rewardStatus };
|
|
107
|
+
if (rewardAmount !== undefined) {
|
|
108
|
+
updateData.referrerRewardAmount = rewardAmount;
|
|
109
|
+
}
|
|
110
|
+
if (rewardProcessedAt) {
|
|
111
|
+
updateData.rewardProcessedAt = rewardProcessedAt;
|
|
112
|
+
}
|
|
113
|
+
return this.update(id, updateData);
|
|
114
|
+
}
|
|
115
|
+
async getPendingRewards() {
|
|
116
|
+
return this.repository.find({
|
|
117
|
+
where: { rewardStatus: referral_event_entity_1.RewardStatus.PENDING },
|
|
118
|
+
relations: ['referrer', 'referred'],
|
|
119
|
+
order: { signupAt: 'ASC' },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
async getConversionFunnel(startDate, endDate) {
|
|
123
|
+
const funnelData = await this.repository
|
|
124
|
+
.createQueryBuilder('re')
|
|
125
|
+
.select('re.status', 'status')
|
|
126
|
+
.addSelect('COUNT(*)', 'count')
|
|
127
|
+
.where('re.signup_at BETWEEN :start AND :end', { start: startDate, end: endDate })
|
|
128
|
+
.groupBy('re.status')
|
|
129
|
+
.getRawMany();
|
|
130
|
+
const counts = Object.fromEntries(funnelData.map((f) => [f.status, Number(f.count)]));
|
|
131
|
+
return {
|
|
132
|
+
signup: counts[referral_event_entity_1.ReferralStatus.SIGNUP] || 0,
|
|
133
|
+
emailVerified: counts[referral_event_entity_1.ReferralStatus.EMAIL_VERIFIED] || 0,
|
|
134
|
+
firstProject: counts[referral_event_entity_1.ReferralStatus.FIRST_PROJECT] || 0,
|
|
135
|
+
converted: counts[referral_event_entity_1.ReferralStatus.CONVERTED] || 0,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
async getAttributionBreakdown(startDate, endDate) {
|
|
139
|
+
const attributionData = await this.repository
|
|
140
|
+
.createQueryBuilder('re')
|
|
141
|
+
.select('COALESCE(re.attribution_source, \'unknown\')', 'source')
|
|
142
|
+
.addSelect('COUNT(*)', 'count')
|
|
143
|
+
.where('re.signup_at BETWEEN :start AND :end', { start: startDate, end: endDate })
|
|
144
|
+
.groupBy('re.attribution_source')
|
|
145
|
+
.getRawMany();
|
|
146
|
+
return Object.fromEntries(attributionData.map((a) => [a.source, Number(a.count)]));
|
|
147
|
+
}
|
|
148
|
+
};
|
|
149
|
+
exports.ReferralEventRepository = ReferralEventRepository;
|
|
150
|
+
exports.ReferralEventRepository = ReferralEventRepository = __decorate([
|
|
151
|
+
(0, common_1.Injectable)(),
|
|
152
|
+
__param(0, (0, typeorm_1.InjectRepository)(referral_event_entity_1.ReferralEvent)),
|
|
153
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
154
|
+
], ReferralEventRepository);
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.RepositoryModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const entities_1 = require("../entities");
|
|
13
|
+
const _1 = require("./");
|
|
14
|
+
const repositories = [
|
|
15
|
+
_1.UserRepository,
|
|
16
|
+
_1.UserProfileRepository,
|
|
17
|
+
_1.UserOnboardingRepository,
|
|
18
|
+
_1.AuthSessionRepository,
|
|
19
|
+
_1.WorkspaceRepository,
|
|
20
|
+
_1.WorkspaceMemberRepository,
|
|
21
|
+
_1.InviteRepository,
|
|
22
|
+
_1.EditorProjectRepository,
|
|
23
|
+
_1.CommentRepository,
|
|
24
|
+
_1.SubscriptionPlanRepository,
|
|
25
|
+
_1.PlanRepository,
|
|
26
|
+
_1.UserSubscriptionRepository,
|
|
27
|
+
_1.SubscriptionUsageRepository,
|
|
28
|
+
_1.PaymentTransactionRepository,
|
|
29
|
+
_1.StripeWebhookRepository,
|
|
30
|
+
_1.CreditTransactionRepository,
|
|
31
|
+
_1.RewardRuleRepository,
|
|
32
|
+
_1.ReferralEventRepository,
|
|
33
|
+
_1.AiUsageRepository,
|
|
34
|
+
_1.AssetRepository,
|
|
35
|
+
_1.EffectRepository,
|
|
36
|
+
_1.VideoTranscodeRepository,
|
|
37
|
+
_1.VideoRenderRepository,
|
|
38
|
+
_1.VideoFilmstripRepository,
|
|
39
|
+
_1.AudioWaveformRepository,
|
|
40
|
+
];
|
|
41
|
+
const entities = [
|
|
42
|
+
entities_1.User,
|
|
43
|
+
entities_1.UserProfile,
|
|
44
|
+
entities_1.UserOnboardingResponse,
|
|
45
|
+
entities_1.AuthSession,
|
|
46
|
+
entities_1.Workspace,
|
|
47
|
+
entities_1.WorkspaceMember,
|
|
48
|
+
entities_1.Invite,
|
|
49
|
+
entities_1.EditorProject,
|
|
50
|
+
entities_1.Comment,
|
|
51
|
+
entities_1.SubscriptionPlan,
|
|
52
|
+
entities_1.Plan,
|
|
53
|
+
entities_1.UserSubscription,
|
|
54
|
+
entities_1.SubscriptionUsage,
|
|
55
|
+
entities_1.PaymentTransaction,
|
|
56
|
+
entities_1.StripeWebhookEvent,
|
|
57
|
+
entities_1.CreditTransaction,
|
|
58
|
+
entities_1.RewardRule,
|
|
59
|
+
entities_1.ReferralEvent,
|
|
60
|
+
entities_1.AIUsage,
|
|
61
|
+
entities_1.Asset,
|
|
62
|
+
entities_1.Effect,
|
|
63
|
+
entities_1.VideoTranscode,
|
|
64
|
+
entities_1.VideoRender,
|
|
65
|
+
entities_1.VideoFilmstrip,
|
|
66
|
+
entities_1.AudioWaveform,
|
|
67
|
+
];
|
|
68
|
+
let RepositoryModule = class RepositoryModule {
|
|
69
|
+
};
|
|
70
|
+
exports.RepositoryModule = RepositoryModule;
|
|
71
|
+
exports.RepositoryModule = RepositoryModule = __decorate([
|
|
72
|
+
(0, common_1.Module)({
|
|
73
|
+
imports: [typeorm_1.TypeOrmModule.forFeature(entities)],
|
|
74
|
+
providers: repositories,
|
|
75
|
+
exports: repositories,
|
|
76
|
+
})
|
|
77
|
+
], RepositoryModule);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { RewardRule } from '../entities/reward-rule.entity';
|
|
4
|
+
export declare class RewardRuleRepository extends BaseRepository<RewardRule> {
|
|
5
|
+
constructor(repository: Repository<RewardRule>);
|
|
6
|
+
findActive(): Promise<RewardRule[]>;
|
|
7
|
+
findByTriggerEvent(event: string): Promise<RewardRule[]>;
|
|
8
|
+
findByRuleName(ruleName: string): Promise<RewardRule | null>;
|
|
9
|
+
deactivate(id: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.RewardRuleRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const base_repository_1 = require("./base.repository");
|
|
20
|
+
const reward_rule_entity_1 = require("../entities/reward-rule.entity");
|
|
21
|
+
let RewardRuleRepository = class RewardRuleRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(repository) {
|
|
23
|
+
super(repository);
|
|
24
|
+
}
|
|
25
|
+
async findActive() {
|
|
26
|
+
return this.repository.find({
|
|
27
|
+
where: { isActive: true },
|
|
28
|
+
order: { createdAt: 'DESC' },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByTriggerEvent(event) {
|
|
32
|
+
return this.repository.find({
|
|
33
|
+
where: { triggerEvent: event, isActive: true },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async findByRuleName(ruleName) {
|
|
37
|
+
return this.repository.findOne({ where: { ruleName } });
|
|
38
|
+
}
|
|
39
|
+
async deactivate(id) {
|
|
40
|
+
await this.repository.update(id, { isActive: false });
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
exports.RewardRuleRepository = RewardRuleRepository;
|
|
44
|
+
exports.RewardRuleRepository = RewardRuleRepository = __decorate([
|
|
45
|
+
(0, common_1.Injectable)(),
|
|
46
|
+
__param(0, (0, typeorm_1.InjectRepository)(reward_rule_entity_1.RewardRule)),
|
|
47
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
48
|
+
], RewardRuleRepository);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { StripeWebhookEvent, WebhookStatus } from '../entities/stripe-webhook.entity';
|
|
3
|
+
import { BaseRepository } from './base.repository';
|
|
4
|
+
export declare class StripeWebhookRepository extends BaseRepository<StripeWebhookEvent> {
|
|
5
|
+
private readonly webhookRepository;
|
|
6
|
+
constructor(webhookRepository: Repository<StripeWebhookEvent>);
|
|
7
|
+
findByEventId(eventId: string): Promise<StripeWebhookEvent | null>;
|
|
8
|
+
findByStatus(status: WebhookStatus): Promise<StripeWebhookEvent[]>;
|
|
9
|
+
updateStatus(id: string, status: WebhookStatus, errorMessage?: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.StripeWebhookRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const stripe_webhook_entity_1 = require("../entities/stripe-webhook.entity");
|
|
20
|
+
const base_repository_1 = require("./base.repository");
|
|
21
|
+
let StripeWebhookRepository = class StripeWebhookRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(webhookRepository) {
|
|
23
|
+
super(webhookRepository);
|
|
24
|
+
this.webhookRepository = webhookRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByEventId(eventId) {
|
|
27
|
+
return this.webhookRepository.findOne({
|
|
28
|
+
where: { eventId },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByStatus(status) {
|
|
32
|
+
return this.webhookRepository.find({
|
|
33
|
+
where: { status },
|
|
34
|
+
order: { createdAt: 'DESC' },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async updateStatus(id, status, errorMessage) {
|
|
38
|
+
const updates = { status };
|
|
39
|
+
if (status === stripe_webhook_entity_1.WebhookStatus.PROCESSED) {
|
|
40
|
+
updates.processedAt = new Date();
|
|
41
|
+
}
|
|
42
|
+
if (errorMessage) {
|
|
43
|
+
updates.errorMessage = errorMessage;
|
|
44
|
+
}
|
|
45
|
+
await this.webhookRepository.update(id, updates);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
exports.StripeWebhookRepository = StripeWebhookRepository;
|
|
49
|
+
exports.StripeWebhookRepository = StripeWebhookRepository = __decorate([
|
|
50
|
+
(0, common_1.Injectable)(),
|
|
51
|
+
__param(0, (0, typeorm_1.InjectRepository)(stripe_webhook_entity_1.StripeWebhookEvent)),
|
|
52
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
53
|
+
], StripeWebhookRepository);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { SubscriptionPlan } from '../entities/subscription-plan.entity';
|
|
4
|
+
export declare class SubscriptionPlanRepository extends BaseRepository<SubscriptionPlan> {
|
|
5
|
+
private readonly planRepository;
|
|
6
|
+
constructor(planRepository: Repository<SubscriptionPlan>);
|
|
7
|
+
findActive(): Promise<SubscriptionPlan[]>;
|
|
8
|
+
findByKey(planKey: string): Promise<SubscriptionPlan | null>;
|
|
9
|
+
findFeatured(): Promise<SubscriptionPlan[]>;
|
|
10
|
+
findByStripeProductId(stripeProductId: string): Promise<SubscriptionPlan | null>;
|
|
11
|
+
findWithCollaboration(): Promise<SubscriptionPlan[]>;
|
|
12
|
+
findActivePlans(): Promise<SubscriptionPlan[]>;
|
|
13
|
+
findByPlanKey(planKey: string): Promise<SubscriptionPlan | null>;
|
|
14
|
+
findAllPlans(): Promise<SubscriptionPlan[]>;
|
|
15
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SubscriptionPlanRepository = void 0;
|
|
16
|
+
const typeorm_1 = require("typeorm");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
const typeorm_2 = require("@nestjs/typeorm");
|
|
19
|
+
const base_repository_1 = require("./base.repository");
|
|
20
|
+
const subscription_plan_entity_1 = require("../entities/subscription-plan.entity");
|
|
21
|
+
let SubscriptionPlanRepository = class SubscriptionPlanRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(planRepository) {
|
|
23
|
+
super(planRepository);
|
|
24
|
+
this.planRepository = planRepository;
|
|
25
|
+
}
|
|
26
|
+
async findActive() {
|
|
27
|
+
return this.planRepository.find({
|
|
28
|
+
where: { isActive: true },
|
|
29
|
+
order: { displayOrder: 'ASC' }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByKey(planKey) {
|
|
33
|
+
return this.planRepository.findOne({
|
|
34
|
+
where: { planKey }
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async findFeatured() {
|
|
38
|
+
return this.planRepository.find({
|
|
39
|
+
where: {
|
|
40
|
+
isActive: true,
|
|
41
|
+
isFeatured: true
|
|
42
|
+
},
|
|
43
|
+
order: { displayOrder: 'ASC' }
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async findByStripeProductId(stripeProductId) {
|
|
47
|
+
return this.planRepository.findOne({
|
|
48
|
+
where: { stripeProductId }
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async findWithCollaboration() {
|
|
52
|
+
return this.planRepository.find({
|
|
53
|
+
where: {
|
|
54
|
+
isActive: true,
|
|
55
|
+
hasCollaboration: true
|
|
56
|
+
},
|
|
57
|
+
order: { priceMonthly: 'ASC' }
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async findActivePlans() {
|
|
61
|
+
return this.findActive();
|
|
62
|
+
}
|
|
63
|
+
async findByPlanKey(planKey) {
|
|
64
|
+
return this.findByKey(planKey);
|
|
65
|
+
}
|
|
66
|
+
async findAllPlans() {
|
|
67
|
+
return this.planRepository.find({
|
|
68
|
+
order: { displayOrder: 'ASC' }
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
exports.SubscriptionPlanRepository = SubscriptionPlanRepository;
|
|
73
|
+
exports.SubscriptionPlanRepository = SubscriptionPlanRepository = __decorate([
|
|
74
|
+
(0, common_1.Injectable)(),
|
|
75
|
+
__param(0, (0, typeorm_2.InjectRepository)(subscription_plan_entity_1.SubscriptionPlan)),
|
|
76
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
77
|
+
], SubscriptionPlanRepository);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { SubscriptionUsage } from '../entities/subscription-usage.entity';
|
|
4
|
+
export declare class SubscriptionUsageRepository extends BaseRepository<SubscriptionUsage> {
|
|
5
|
+
constructor(repository: Repository<SubscriptionUsage>);
|
|
6
|
+
findBySubscriptionId(subscriptionId: string): Promise<SubscriptionUsage[]>;
|
|
7
|
+
findCurrentPeriod(subscriptionId: string): Promise<SubscriptionUsage | null>;
|
|
8
|
+
incrementUsage(id: string, amount?: number): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.SubscriptionUsageRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const base_repository_1 = require("./base.repository");
|
|
20
|
+
const subscription_usage_entity_1 = require("../entities/subscription-usage.entity");
|
|
21
|
+
let SubscriptionUsageRepository = class SubscriptionUsageRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(repository) {
|
|
23
|
+
super(repository);
|
|
24
|
+
}
|
|
25
|
+
async findBySubscriptionId(subscriptionId) {
|
|
26
|
+
return this.repository.find({
|
|
27
|
+
where: { subscriptionId },
|
|
28
|
+
order: { periodStart: 'DESC' },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findCurrentPeriod(subscriptionId) {
|
|
32
|
+
const now = new Date();
|
|
33
|
+
return this.repository.findOne({
|
|
34
|
+
where: {
|
|
35
|
+
subscriptionId,
|
|
36
|
+
periodStart: (0, typeorm_2.Between)(new Date(now.getTime() - 32 * 24 * 60 * 60 * 1000), now),
|
|
37
|
+
},
|
|
38
|
+
order: { periodStart: 'DESC' },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async incrementUsage(id, amount = 1) {
|
|
42
|
+
await this.repository.increment({ id }, 'usageCount', amount);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
exports.SubscriptionUsageRepository = SubscriptionUsageRepository;
|
|
46
|
+
exports.SubscriptionUsageRepository = SubscriptionUsageRepository = __decorate([
|
|
47
|
+
(0, common_1.Injectable)(),
|
|
48
|
+
__param(0, (0, typeorm_1.InjectRepository)(subscription_usage_entity_1.SubscriptionUsage)),
|
|
49
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
50
|
+
], SubscriptionUsageRepository);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { UserOnboardingResponse } from '../entities/user-onboarding.entity';
|
|
3
|
+
import { BaseRepository } from './base.repository';
|
|
4
|
+
export declare class UserOnboardingRepository extends BaseRepository<UserOnboardingResponse> {
|
|
5
|
+
private readonly onboardingRepository;
|
|
6
|
+
constructor(onboardingRepository: Repository<UserOnboardingResponse>);
|
|
7
|
+
findByUserId(userId: string): Promise<UserOnboardingResponse[]>;
|
|
8
|
+
findByUserAndQuestion(userId: string, questionKey: string): Promise<UserOnboardingResponse | null>;
|
|
9
|
+
upsertResponse(userId: string, questionKey: string, responseValue: any): Promise<UserOnboardingResponse>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,56 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.UserOnboardingRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const user_onboarding_entity_1 = require("../entities/user-onboarding.entity");
|
|
20
|
+
const base_repository_1 = require("./base.repository");
|
|
21
|
+
let UserOnboardingRepository = class UserOnboardingRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(onboardingRepository) {
|
|
23
|
+
super(onboardingRepository);
|
|
24
|
+
this.onboardingRepository = onboardingRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByUserId(userId) {
|
|
27
|
+
return this.onboardingRepository.find({
|
|
28
|
+
where: { userId },
|
|
29
|
+
order: { createdAt: 'ASC' },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByUserAndQuestion(userId, questionKey) {
|
|
33
|
+
return this.onboardingRepository.findOne({
|
|
34
|
+
where: { userId, questionKey },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async upsertResponse(userId, questionKey, responseValue) {
|
|
38
|
+
const existing = await this.findByUserAndQuestion(userId, questionKey);
|
|
39
|
+
if (existing) {
|
|
40
|
+
existing.responseValue = responseValue;
|
|
41
|
+
return this.onboardingRepository.save(existing);
|
|
42
|
+
}
|
|
43
|
+
const newResponse = this.onboardingRepository.create({
|
|
44
|
+
userId,
|
|
45
|
+
questionKey,
|
|
46
|
+
responseValue,
|
|
47
|
+
});
|
|
48
|
+
return this.onboardingRepository.save(newResponse);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.UserOnboardingRepository = UserOnboardingRepository;
|
|
52
|
+
exports.UserOnboardingRepository = UserOnboardingRepository = __decorate([
|
|
53
|
+
(0, common_1.Injectable)(),
|
|
54
|
+
__param(0, (0, typeorm_1.InjectRepository)(user_onboarding_entity_1.UserOnboardingResponse)),
|
|
55
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
56
|
+
], UserOnboardingRepository);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { UserProfile } from '../entities/user-profile.entity';
|
|
3
|
+
import { BaseRepository } from './base.repository';
|
|
4
|
+
export declare class UserProfileRepository extends BaseRepository<UserProfile> {
|
|
5
|
+
private readonly userProfileRepository;
|
|
6
|
+
constructor(userProfileRepository: Repository<UserProfile>);
|
|
7
|
+
findByUserId(userId: string): Promise<UserProfile | null>;
|
|
8
|
+
updateProfile(userId: string, updates: Partial<UserProfile>): Promise<UserProfile | null>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
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
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.UserProfileRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const user_profile_entity_1 = require("../entities/user-profile.entity");
|
|
20
|
+
const base_repository_1 = require("./base.repository");
|
|
21
|
+
let UserProfileRepository = class UserProfileRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(userProfileRepository) {
|
|
23
|
+
super(userProfileRepository);
|
|
24
|
+
this.userProfileRepository = userProfileRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByUserId(userId) {
|
|
27
|
+
return this.userProfileRepository.findOne({
|
|
28
|
+
where: { userId },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async updateProfile(userId, updates) {
|
|
32
|
+
await this.userProfileRepository.update({ userId }, updates);
|
|
33
|
+
return this.findByUserId(userId);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
exports.UserProfileRepository = UserProfileRepository;
|
|
37
|
+
exports.UserProfileRepository = UserProfileRepository = __decorate([
|
|
38
|
+
(0, common_1.Injectable)(),
|
|
39
|
+
__param(0, (0, typeorm_1.InjectRepository)(user_profile_entity_1.UserProfile)),
|
|
40
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
41
|
+
], UserProfileRepository);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { UserSubscription, SubscriptionStatus } from '../entities/user-subscription.entity';
|
|
4
|
+
export declare class UserSubscriptionRepository extends BaseRepository<UserSubscription> {
|
|
5
|
+
private readonly subscriptionRepository;
|
|
6
|
+
constructor(subscriptionRepository: Repository<UserSubscription>);
|
|
7
|
+
findActiveByUserId(userId: string): Promise<UserSubscription | null>;
|
|
8
|
+
findByUserId(userId: string): Promise<UserSubscription[]>;
|
|
9
|
+
cancelSubscription(subscriptionId: string): Promise<void>;
|
|
10
|
+
findOneByUserId(userId: string): Promise<UserSubscription | null>;
|
|
11
|
+
findByStripeSubscriptionId(stripeSubscriptionId: string): Promise<UserSubscription | null>;
|
|
12
|
+
findByStatus(status: SubscriptionStatus): Promise<UserSubscription[]>;
|
|
13
|
+
findByPlanId(planId: string): Promise<UserSubscription[]>;
|
|
14
|
+
findExpiringSubscriptions(beforeDate: string): Promise<UserSubscription[]>;
|
|
15
|
+
findTrialEndingSoon(beforeDate: string): Promise<UserSubscription[]>;
|
|
16
|
+
}
|