clhq-postgres-module 1.1.0-alpha.90
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 +47 -0
- package/dist/entities/asset.entity.js +155 -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-transaction.entity.d.ts +13 -0
- package/dist/entities/credit-transaction.entity.js +61 -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 +23 -0
- package/dist/entities/index.js +41 -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/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-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 +14 -0
- package/dist/entities/workspace.entity.js +63 -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 +62 -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 +20 -0
- package/dist/repositories/asset.repository.js +108 -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 +23 -0
- package/dist/repositories/index.js +49 -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/repository.module.d.ts +2 -0
- package/dist/repositories/repository.module.js +71 -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-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 +59 -0
|
@@ -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
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.UserSubscriptionRepository = 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 user_subscription_entity_1 = require("../entities/user-subscription.entity");
|
|
21
|
+
let UserSubscriptionRepository = class UserSubscriptionRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(subscriptionRepository) {
|
|
23
|
+
super(subscriptionRepository);
|
|
24
|
+
this.subscriptionRepository = subscriptionRepository;
|
|
25
|
+
}
|
|
26
|
+
async findActiveByUserId(userId) {
|
|
27
|
+
return this.subscriptionRepository.findOne({
|
|
28
|
+
where: { userId, status: user_subscription_entity_1.SubscriptionStatus.ACTIVE }
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByUserId(userId) {
|
|
32
|
+
return this.subscriptionRepository.find({
|
|
33
|
+
where: { userId },
|
|
34
|
+
order: { createdAt: 'DESC' }
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async cancelSubscription(subscriptionId) {
|
|
38
|
+
await this.subscriptionRepository.update(subscriptionId, {
|
|
39
|
+
status: user_subscription_entity_1.SubscriptionStatus.CANCELLED,
|
|
40
|
+
cancelledAt: new Date(),
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async findOneByUserId(userId) {
|
|
44
|
+
return this.subscriptionRepository.findOne({
|
|
45
|
+
where: { userId },
|
|
46
|
+
order: { createdAt: 'DESC' }
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
async findByStripeSubscriptionId(stripeSubscriptionId) {
|
|
50
|
+
return this.subscriptionRepository.findOne({
|
|
51
|
+
where: { stripeSubscriptionId }
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
async findByStatus(status) {
|
|
55
|
+
return this.subscriptionRepository.find({
|
|
56
|
+
where: { status },
|
|
57
|
+
order: { createdAt: 'DESC' }
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async findByPlanId(planId) {
|
|
61
|
+
return this.subscriptionRepository.find({
|
|
62
|
+
where: { planId },
|
|
63
|
+
order: { createdAt: 'DESC' }
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
async findExpiringSubscriptions(beforeDate) {
|
|
67
|
+
return this.subscriptionRepository
|
|
68
|
+
.createQueryBuilder('subscription')
|
|
69
|
+
.where('subscription.currentPeriodEnd <= :beforeDate', { beforeDate: new Date(beforeDate) })
|
|
70
|
+
.andWhere('subscription.status IN (:...statuses)', {
|
|
71
|
+
statuses: [user_subscription_entity_1.SubscriptionStatus.ACTIVE, user_subscription_entity_1.SubscriptionStatus.TRIAL]
|
|
72
|
+
})
|
|
73
|
+
.orderBy('subscription.currentPeriodEnd', 'ASC')
|
|
74
|
+
.getMany();
|
|
75
|
+
}
|
|
76
|
+
async findTrialEndingSoon(beforeDate) {
|
|
77
|
+
return this.subscriptionRepository
|
|
78
|
+
.createQueryBuilder('subscription')
|
|
79
|
+
.where('subscription.trialEndsAt <= :beforeDate', { beforeDate: new Date(beforeDate) })
|
|
80
|
+
.andWhere('subscription.status = :status', { status: user_subscription_entity_1.SubscriptionStatus.TRIAL })
|
|
81
|
+
.orderBy('subscription.trialEndsAt', 'ASC')
|
|
82
|
+
.getMany();
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
exports.UserSubscriptionRepository = UserSubscriptionRepository;
|
|
86
|
+
exports.UserSubscriptionRepository = UserSubscriptionRepository = __decorate([
|
|
87
|
+
(0, common_1.Injectable)(),
|
|
88
|
+
__param(0, (0, typeorm_2.InjectRepository)(user_subscription_entity_1.UserSubscription)),
|
|
89
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
90
|
+
], UserSubscriptionRepository);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { User } from '../entities/user.entity';
|
|
4
|
+
export declare class UserRepository extends BaseRepository<User> {
|
|
5
|
+
private readonly userRepository;
|
|
6
|
+
constructor(userRepository: Repository<User>);
|
|
7
|
+
findByEmail(email: string): Promise<User | null>;
|
|
8
|
+
findByAuth0UserId(auth0UserId: string): Promise<User | null>;
|
|
9
|
+
findByStripeCustomerId(stripeCustomerId: string): Promise<User | null>;
|
|
10
|
+
findByUsername(username: string): Promise<User | null>;
|
|
11
|
+
updateLastLogin(userId: string): Promise<void>;
|
|
12
|
+
markEmailVerified(userId: string): Promise<void>;
|
|
13
|
+
scheduleForDeletion(userId: string, deletionDate: Date): Promise<void>;
|
|
14
|
+
findByReferralCode(referralCode: string): Promise<User | null>;
|
|
15
|
+
incrementReferralCount(userId: string): Promise<void>;
|
|
16
|
+
findScheduledForDeletion(): Promise<User[]>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
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.UserRepository = 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 user_entity_1 = require("../entities/user.entity");
|
|
21
|
+
let UserRepository = class UserRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(userRepository) {
|
|
23
|
+
super(userRepository);
|
|
24
|
+
this.userRepository = userRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByEmail(email) {
|
|
27
|
+
return this.userRepository.findOne({
|
|
28
|
+
where: { email },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByAuth0UserId(auth0UserId) {
|
|
32
|
+
return this.userRepository.findOne({
|
|
33
|
+
where: { auth0UserId },
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async findByStripeCustomerId(stripeCustomerId) {
|
|
37
|
+
return this.userRepository.findOne({
|
|
38
|
+
where: { stripeCustomerId },
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async findByUsername(username) {
|
|
42
|
+
return this.userRepository.findOne({
|
|
43
|
+
where: { username },
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
async updateLastLogin(userId) {
|
|
47
|
+
await this.userRepository.update(userId, {
|
|
48
|
+
lastLoginAt: new Date(),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async markEmailVerified(userId) {
|
|
52
|
+
await this.userRepository.update(userId, {
|
|
53
|
+
emailVerified: true,
|
|
54
|
+
emailVerifiedAt: new Date(),
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async scheduleForDeletion(userId, deletionDate) {
|
|
58
|
+
await this.userRepository.update(userId, {
|
|
59
|
+
scheduledDeletionAt: deletionDate,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async findByReferralCode(referralCode) {
|
|
63
|
+
return this.userRepository.findOne({
|
|
64
|
+
where: { referralCode },
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async incrementReferralCount(userId) {
|
|
68
|
+
await this.userRepository
|
|
69
|
+
.createQueryBuilder()
|
|
70
|
+
.update()
|
|
71
|
+
.set({ referralCount: () => 'referral_count + 1' })
|
|
72
|
+
.where('id = :userId', { userId })
|
|
73
|
+
.execute();
|
|
74
|
+
}
|
|
75
|
+
async findScheduledForDeletion() {
|
|
76
|
+
return this.userRepository
|
|
77
|
+
.createQueryBuilder('user')
|
|
78
|
+
.where('user.scheduledDeletionAt IS NOT NULL')
|
|
79
|
+
.andWhere('user.scheduledDeletionAt <= :now', { now: new Date() })
|
|
80
|
+
.andWhere('user.status = :status', { status: 'deleted' })
|
|
81
|
+
.getMany();
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
exports.UserRepository = UserRepository;
|
|
85
|
+
exports.UserRepository = UserRepository = __decorate([
|
|
86
|
+
(0, common_1.Injectable)(),
|
|
87
|
+
__param(0, (0, typeorm_2.InjectRepository)(user_entity_1.User)),
|
|
88
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
89
|
+
], UserRepository);
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { VideoRender, VideoRenderStatus } from '../entities/video-render.entity';
|
|
4
|
+
export declare class VideoRenderRepository extends BaseRepository<VideoRender> {
|
|
5
|
+
private readonly videoRenderRepository;
|
|
6
|
+
constructor(videoRenderRepository: Repository<VideoRender>);
|
|
7
|
+
findByUserId(userId: string): Promise<VideoRender[]>;
|
|
8
|
+
findByProjectId(projectId: string): Promise<VideoRender[]>;
|
|
9
|
+
findByStatus(status: VideoRenderStatus): Promise<VideoRender[]>;
|
|
10
|
+
updateRender(id: string, data: {
|
|
11
|
+
title?: string;
|
|
12
|
+
s3Url?: string;
|
|
13
|
+
s3ImageUrl?: string;
|
|
14
|
+
status?: VideoRenderStatus;
|
|
15
|
+
data?: any;
|
|
16
|
+
}): Promise<VideoRender | null>;
|
|
17
|
+
createWithId(data: {
|
|
18
|
+
id: string;
|
|
19
|
+
userId: string;
|
|
20
|
+
projectId?: string;
|
|
21
|
+
title?: string;
|
|
22
|
+
s3Url?: string;
|
|
23
|
+
s3ImageUrl?: string;
|
|
24
|
+
status?: VideoRenderStatus;
|
|
25
|
+
data?: any;
|
|
26
|
+
}): Promise<VideoRender>;
|
|
27
|
+
getAll(): Promise<VideoRender[]>;
|
|
28
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
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.VideoRenderRepository = 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 video_render_entity_1 = require("../entities/video-render.entity");
|
|
21
|
+
let VideoRenderRepository = class VideoRenderRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(videoRenderRepository) {
|
|
23
|
+
super(videoRenderRepository);
|
|
24
|
+
this.videoRenderRepository = videoRenderRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByUserId(userId) {
|
|
27
|
+
return this.videoRenderRepository.find({
|
|
28
|
+
where: { userId },
|
|
29
|
+
order: { createdAt: 'DESC' },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByProjectId(projectId) {
|
|
33
|
+
return this.videoRenderRepository.find({
|
|
34
|
+
where: { projectId },
|
|
35
|
+
order: { createdAt: 'DESC' },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async findByStatus(status) {
|
|
39
|
+
return this.videoRenderRepository.find({
|
|
40
|
+
where: { status },
|
|
41
|
+
order: { createdAt: 'DESC' },
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async updateRender(id, data) {
|
|
45
|
+
await this.videoRenderRepository.update(id, data);
|
|
46
|
+
return this.findById(id);
|
|
47
|
+
}
|
|
48
|
+
async createWithId(data) {
|
|
49
|
+
const entity = this.videoRenderRepository.create(data);
|
|
50
|
+
return this.videoRenderRepository.save(entity);
|
|
51
|
+
}
|
|
52
|
+
async getAll() {
|
|
53
|
+
return this.videoRenderRepository.find({
|
|
54
|
+
order: { createdAt: 'DESC' },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
exports.VideoRenderRepository = VideoRenderRepository;
|
|
59
|
+
exports.VideoRenderRepository = VideoRenderRepository = __decorate([
|
|
60
|
+
(0, common_1.Injectable)(),
|
|
61
|
+
__param(0, (0, typeorm_2.InjectRepository)(video_render_entity_1.VideoRender)),
|
|
62
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
63
|
+
], VideoRenderRepository);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { VideoTranscode, VideoTranscodeStatus } from '../entities/video-transcode.entity';
|
|
4
|
+
export declare class VideoTranscodeRepository extends BaseRepository<VideoTranscode> {
|
|
5
|
+
private readonly videoTranscodeRepository;
|
|
6
|
+
constructor(videoTranscodeRepository: Repository<VideoTranscode>);
|
|
7
|
+
findByProjectId(projectId: string): Promise<VideoTranscode[]>;
|
|
8
|
+
findByStatus(status: VideoTranscodeStatus): Promise<VideoTranscode[]>;
|
|
9
|
+
updateTranscode(id: string, data: {
|
|
10
|
+
status?: VideoTranscodeStatus;
|
|
11
|
+
s3Key?: string;
|
|
12
|
+
data?: any;
|
|
13
|
+
queueStatus?: string;
|
|
14
|
+
}): Promise<VideoTranscode | null>;
|
|
15
|
+
createWithId(data: {
|
|
16
|
+
id: string;
|
|
17
|
+
projectId?: string;
|
|
18
|
+
s3Key?: string;
|
|
19
|
+
status?: VideoTranscodeStatus;
|
|
20
|
+
data?: any;
|
|
21
|
+
queueStatus?: string;
|
|
22
|
+
}): Promise<VideoTranscode>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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.VideoTranscodeRepository = 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 video_transcode_entity_1 = require("../entities/video-transcode.entity");
|
|
21
|
+
let VideoTranscodeRepository = class VideoTranscodeRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(videoTranscodeRepository) {
|
|
23
|
+
super(videoTranscodeRepository);
|
|
24
|
+
this.videoTranscodeRepository = videoTranscodeRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByProjectId(projectId) {
|
|
27
|
+
return this.videoTranscodeRepository.find({
|
|
28
|
+
where: { projectId },
|
|
29
|
+
order: { createdAt: 'DESC' },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByStatus(status) {
|
|
33
|
+
return this.videoTranscodeRepository.find({
|
|
34
|
+
where: { status },
|
|
35
|
+
order: { createdAt: 'DESC' },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async updateTranscode(id, data) {
|
|
39
|
+
await this.videoTranscodeRepository.update(id, data);
|
|
40
|
+
return this.findById(id);
|
|
41
|
+
}
|
|
42
|
+
async createWithId(data) {
|
|
43
|
+
const entity = this.videoTranscodeRepository.create(data);
|
|
44
|
+
return this.videoTranscodeRepository.save(entity);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.VideoTranscodeRepository = VideoTranscodeRepository;
|
|
48
|
+
exports.VideoTranscodeRepository = VideoTranscodeRepository = __decorate([
|
|
49
|
+
(0, common_1.Injectable)(),
|
|
50
|
+
__param(0, (0, typeorm_2.InjectRepository)(video_transcode_entity_1.VideoTranscode)),
|
|
51
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
52
|
+
], VideoTranscodeRepository);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { WorkspaceMember } from '../entities/workspace-member.entity';
|
|
4
|
+
export declare class WorkspaceMemberRepository extends BaseRepository<WorkspaceMember> {
|
|
5
|
+
private readonly memberRepository;
|
|
6
|
+
constructor(memberRepository: Repository<WorkspaceMember>);
|
|
7
|
+
findByWorkspaceAndUser(workspaceId: string, userId: string): Promise<WorkspaceMember | null>;
|
|
8
|
+
findByWorkspace(workspaceId: string): Promise<WorkspaceMember[]>;
|
|
9
|
+
findByUser(userId: string): Promise<WorkspaceMember[]>;
|
|
10
|
+
findAdmins(workspaceId: string): Promise<WorkspaceMember[]>;
|
|
11
|
+
isAdmin(workspaceId: string, userId: string): Promise<boolean>;
|
|
12
|
+
countMembers(workspaceId: string): Promise<number>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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.WorkspaceMemberRepository = 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 workspace_member_entity_1 = require("../entities/workspace-member.entity");
|
|
21
|
+
let WorkspaceMemberRepository = class WorkspaceMemberRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(memberRepository) {
|
|
23
|
+
super(memberRepository);
|
|
24
|
+
this.memberRepository = memberRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByWorkspaceAndUser(workspaceId, userId) {
|
|
27
|
+
return this.memberRepository.findOne({
|
|
28
|
+
where: {
|
|
29
|
+
workspaceId,
|
|
30
|
+
userId,
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
async findByWorkspace(workspaceId) {
|
|
35
|
+
return this.memberRepository.find({
|
|
36
|
+
where: { workspaceId },
|
|
37
|
+
relations: ['user'],
|
|
38
|
+
order: { createdAt: 'DESC' }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async findByUser(userId) {
|
|
42
|
+
return this.memberRepository.find({
|
|
43
|
+
where: { userId },
|
|
44
|
+
relations: ['workspace'],
|
|
45
|
+
order: { createdAt: 'DESC' }
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
async findAdmins(workspaceId) {
|
|
49
|
+
return this.memberRepository.find({
|
|
50
|
+
where: {
|
|
51
|
+
workspaceId,
|
|
52
|
+
role: workspace_member_entity_1.WorkspaceMemberRole.ADMIN,
|
|
53
|
+
},
|
|
54
|
+
relations: ['user'],
|
|
55
|
+
order: { createdAt: 'ASC' }
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
async isAdmin(workspaceId, userId) {
|
|
59
|
+
const member = await this.memberRepository.findOne({
|
|
60
|
+
where: {
|
|
61
|
+
workspaceId,
|
|
62
|
+
userId,
|
|
63
|
+
role: workspace_member_entity_1.WorkspaceMemberRole.ADMIN,
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
return !!member;
|
|
67
|
+
}
|
|
68
|
+
async countMembers(workspaceId) {
|
|
69
|
+
return this.memberRepository.count({
|
|
70
|
+
where: { workspaceId }
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.WorkspaceMemberRepository = WorkspaceMemberRepository;
|
|
75
|
+
exports.WorkspaceMemberRepository = WorkspaceMemberRepository = __decorate([
|
|
76
|
+
(0, common_1.Injectable)(),
|
|
77
|
+
__param(0, (0, typeorm_2.InjectRepository)(workspace_member_entity_1.WorkspaceMember)),
|
|
78
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
79
|
+
], WorkspaceMemberRepository);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { Workspace } from '../entities/workspace.entity';
|
|
4
|
+
export declare class WorkspaceRepository extends BaseRepository<Workspace> {
|
|
5
|
+
private readonly workspaceRepository;
|
|
6
|
+
constructor(workspaceRepository: Repository<Workspace>);
|
|
7
|
+
findByOwner(ownerId: string): Promise<Workspace[]>;
|
|
8
|
+
findWithMembers(workspaceId: string): Promise<Workspace | null>;
|
|
9
|
+
findWithProjects(workspaceId: string): Promise<Workspace | null>;
|
|
10
|
+
findShared(): Promise<Workspace[]>;
|
|
11
|
+
countByOwner(ownerId: string): Promise<number>;
|
|
12
|
+
findByOwnerId(ownerId: string): Promise<Workspace[]>;
|
|
13
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
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.WorkspaceRepository = 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 workspace_entity_1 = require("../entities/workspace.entity");
|
|
21
|
+
let WorkspaceRepository = class WorkspaceRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(workspaceRepository) {
|
|
23
|
+
super(workspaceRepository);
|
|
24
|
+
this.workspaceRepository = workspaceRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByOwner(ownerId) {
|
|
27
|
+
return this.workspaceRepository.find({
|
|
28
|
+
where: { ownerId },
|
|
29
|
+
order: { createdAt: 'DESC' }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findWithMembers(workspaceId) {
|
|
33
|
+
return this.workspaceRepository.findOne({
|
|
34
|
+
where: { id: workspaceId },
|
|
35
|
+
relations: ['users']
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async findWithProjects(workspaceId) {
|
|
39
|
+
return this.workspaceRepository.findOne({
|
|
40
|
+
where: { id: workspaceId },
|
|
41
|
+
relations: ['projects']
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async findShared() {
|
|
45
|
+
return this.workspaceRepository.find({
|
|
46
|
+
where: { isShared: true },
|
|
47
|
+
order: { createdAt: 'DESC' }
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
async countByOwner(ownerId) {
|
|
51
|
+
return this.workspaceRepository.count({
|
|
52
|
+
where: { ownerId }
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
async findByOwnerId(ownerId) {
|
|
56
|
+
return this.findByOwner(ownerId);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
exports.WorkspaceRepository = WorkspaceRepository;
|
|
60
|
+
exports.WorkspaceRepository = WorkspaceRepository = __decorate([
|
|
61
|
+
(0, common_1.Injectable)(),
|
|
62
|
+
__param(0, (0, typeorm_2.InjectRepository)(workspace_entity_1.Workspace)),
|
|
63
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
64
|
+
], WorkspaceRepository);
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "clhq-postgres-module",
|
|
3
|
+
"version": "1.1.0-alpha.90",
|
|
4
|
+
"description": "PostgreSQL module using TypeORM for Clippy",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist/**/*"
|
|
9
|
+
],
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/reacthub-pricematch/clhq-api-monorepo"
|
|
13
|
+
},
|
|
14
|
+
"publishConfig": {
|
|
15
|
+
"registry": "https://registry.npmjs.org/",
|
|
16
|
+
"access": "public"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/reacthub-pricematch/clhq-api-monorepo/issues"
|
|
20
|
+
},
|
|
21
|
+
"license": "MIT",
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"watch": "tsc --watch",
|
|
25
|
+
"typeorm": "typeorm-ts-node-commonjs",
|
|
26
|
+
"db:setup": "env-cmd -f ../../.env.dev npx ts-node scripts/setup-database.ts",
|
|
27
|
+
"db:migrate": "npx ts-node scripts/run-migrations.ts --all",
|
|
28
|
+
"db:migrate:002": "npx ts-node scripts/run-migrations.ts 002",
|
|
29
|
+
"db:migrate:003": "npx ts-node scripts/run-migrations.ts 003",
|
|
30
|
+
"db:migrate:004": "npx ts-node scripts/run-migrations.ts 004",
|
|
31
|
+
"db:migrate:008": "npx ts-node scripts/run-migrations.ts 008",
|
|
32
|
+
"db:migrate:009": "npx ts-node scripts/run-migrations.ts 009",
|
|
33
|
+
"db:verify": "env-cmd -f ../../.env.dev npx ts-node scripts/verify-tables.ts",
|
|
34
|
+
"db:test": "env-cmd -f ../../.env.dev npx ts-node scripts/test-connections.ts",
|
|
35
|
+
"db:sync": "env-cmd -f ../../.env.dev npm run typeorm schema:sync -- -d src/config/data-source.ts",
|
|
36
|
+
"db:drop": "env-cmd -f ../../.env.dev npm run typeorm schema:drop -- -d src/config/data-source.ts"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"@nestjs/common": "^11.1.5",
|
|
40
|
+
"@nestjs/config": "^4",
|
|
41
|
+
"@nestjs/core": "^11.1.5",
|
|
42
|
+
"@nestjs/typeorm": "^10.0.0",
|
|
43
|
+
"@supabase/supabase-js": "^2.39.0",
|
|
44
|
+
"class-transformer": "0.5.1",
|
|
45
|
+
"class-validator": "0.14.2",
|
|
46
|
+
"dotenv": "^16.3.1",
|
|
47
|
+
"pg": "^8.11.3",
|
|
48
|
+
"reflect-metadata": "0.2.2",
|
|
49
|
+
"rxjs": "^7.8.1",
|
|
50
|
+
"typeorm": "^0.3.17"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@types/node": "^24.0.4",
|
|
54
|
+
"@types/pg": "^8.10.9",
|
|
55
|
+
"env-cmd": "^10.1.0",
|
|
56
|
+
"ts-node": "10.9.2",
|
|
57
|
+
"typescript": "^5.8.3"
|
|
58
|
+
}
|
|
59
|
+
}
|