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,12 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { AiUsage } from '../entities/ai-usage.entity';
|
|
4
|
+
export declare class AiUsageRepository extends BaseRepository<AiUsage> {
|
|
5
|
+
constructor(repository: Repository<AiUsage>);
|
|
6
|
+
findByUserId(userId: string): Promise<AiUsage[]>;
|
|
7
|
+
findByProjectId(projectId: string): Promise<AiUsage[]>;
|
|
8
|
+
getTotalUsage(userId: string, startDate: Date, endDate: Date): Promise<{
|
|
9
|
+
totalTokens: number;
|
|
10
|
+
totalCost: number;
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
@@ -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.AiUsageRepository = 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 ai_usage_entity_1 = require("../entities/ai-usage.entity");
|
|
21
|
+
let AiUsageRepository = class AiUsageRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(repository) {
|
|
23
|
+
super(repository);
|
|
24
|
+
}
|
|
25
|
+
async findByUserId(userId) {
|
|
26
|
+
return this.repository.find({
|
|
27
|
+
where: { userId },
|
|
28
|
+
order: { createdAt: 'DESC' },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByProjectId(projectId) {
|
|
32
|
+
return this.repository.find({
|
|
33
|
+
where: { projectId },
|
|
34
|
+
order: { createdAt: 'DESC' },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async getTotalUsage(userId, startDate, endDate) {
|
|
38
|
+
const result = await this.repository
|
|
39
|
+
.createQueryBuilder('ai_usage')
|
|
40
|
+
.select('SUM(ai_usage.tokens_used)', 'totalTokens')
|
|
41
|
+
.addSelect('SUM(ai_usage.cost_cents)', 'totalCost')
|
|
42
|
+
.where('ai_usage.user_id = :userId', { userId })
|
|
43
|
+
.andWhere('ai_usage.created_at BETWEEN :startDate AND :endDate', { startDate, endDate })
|
|
44
|
+
.getRawOne();
|
|
45
|
+
return {
|
|
46
|
+
totalTokens: parseInt(result.totalTokens || '0'),
|
|
47
|
+
totalCost: parseInt(result.totalCost || '0'),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
exports.AiUsageRepository = AiUsageRepository;
|
|
52
|
+
exports.AiUsageRepository = AiUsageRepository = __decorate([
|
|
53
|
+
(0, common_1.Injectable)(),
|
|
54
|
+
__param(0, (0, typeorm_1.InjectRepository)(ai_usage_entity_1.AiUsage)),
|
|
55
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
56
|
+
], AiUsageRepository);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { Asset } from '../entities/asset.entity';
|
|
4
|
+
export declare class AssetRepository extends BaseRepository<Asset> {
|
|
5
|
+
private readonly assetRepository;
|
|
6
|
+
constructor(assetRepository: Repository<Asset>);
|
|
7
|
+
findByWorkspace(workspaceId: string): Promise<Asset[]>;
|
|
8
|
+
findByFileType(workspaceId: string, fileType: string): Promise<Asset[]>;
|
|
9
|
+
findByUser(userId: string): Promise<Asset[]>;
|
|
10
|
+
findByUniqueId(uniqueId: string): Promise<Asset | null>;
|
|
11
|
+
searchByName(workspaceId: string, searchTerm: string): Promise<Asset[]>;
|
|
12
|
+
findByUploadedBy(userId: string): Promise<Asset[]>;
|
|
13
|
+
findByWorkspaceId(workspaceId: string): Promise<Asset[]>;
|
|
14
|
+
findByUploadStatus(uploadStatus: string): Promise<Asset[]>;
|
|
15
|
+
updateUploadStatus(id: string, uploadStatus: string): Promise<Asset | null>;
|
|
16
|
+
bulkUpdateUploadStatus(ids: string[], uploadStatus: string): Promise<void>;
|
|
17
|
+
updateMetadata(id: string, metadata: Record<string, any>): Promise<Asset | null>;
|
|
18
|
+
updateProcessingMetadata(uniqueId: string, processingData: Record<string, any>): Promise<Asset | null>;
|
|
19
|
+
getAll(): Promise<Asset[]>;
|
|
20
|
+
findByUserOrLegacy(userId: string): Promise<Asset[]>;
|
|
21
|
+
incrementUsageCount(id: string): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,128 @@
|
|
|
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.AssetRepository = 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 asset_entity_1 = require("../entities/asset.entity");
|
|
21
|
+
let AssetRepository = class AssetRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(assetRepository) {
|
|
23
|
+
super(assetRepository);
|
|
24
|
+
this.assetRepository = assetRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByWorkspace(workspaceId) {
|
|
27
|
+
return this.assetRepository.find({
|
|
28
|
+
where: { workspaceId },
|
|
29
|
+
order: { createdAt: 'DESC' }
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByFileType(workspaceId, fileType) {
|
|
33
|
+
return this.assetRepository.find({
|
|
34
|
+
where: {
|
|
35
|
+
workspaceId,
|
|
36
|
+
fileType,
|
|
37
|
+
},
|
|
38
|
+
order: { createdAt: 'DESC' }
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
async findByUser(userId) {
|
|
42
|
+
return this.assetRepository.find({
|
|
43
|
+
where: { uploadedBy: userId },
|
|
44
|
+
order: { createdAt: 'DESC' }
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async findByUniqueId(uniqueId) {
|
|
48
|
+
return this.assetRepository.findOne({
|
|
49
|
+
where: { uniqueId },
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async searchByName(workspaceId, searchTerm) {
|
|
53
|
+
return this.assetRepository
|
|
54
|
+
.createQueryBuilder('asset')
|
|
55
|
+
.where('asset.workspaceId = :workspaceId', { workspaceId })
|
|
56
|
+
.andWhere('asset.name ILIKE :searchTerm', { searchTerm: `%${searchTerm}%` })
|
|
57
|
+
.orderBy('asset.createdAt', 'DESC')
|
|
58
|
+
.getMany();
|
|
59
|
+
}
|
|
60
|
+
async findByUploadedBy(userId) {
|
|
61
|
+
return this.findByUser(userId);
|
|
62
|
+
}
|
|
63
|
+
async findByWorkspaceId(workspaceId) {
|
|
64
|
+
return this.findByWorkspace(workspaceId);
|
|
65
|
+
}
|
|
66
|
+
async findByUploadStatus(uploadStatus) {
|
|
67
|
+
return this.assetRepository.find({
|
|
68
|
+
where: { uploadStatus },
|
|
69
|
+
order: { createdAt: 'DESC' },
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
async updateUploadStatus(id, uploadStatus) {
|
|
73
|
+
await this.assetRepository.update(id, { uploadStatus });
|
|
74
|
+
return this.findById(id);
|
|
75
|
+
}
|
|
76
|
+
async bulkUpdateUploadStatus(ids, uploadStatus) {
|
|
77
|
+
await this.assetRepository.update({ id: (0, typeorm_1.In)(ids) }, { uploadStatus });
|
|
78
|
+
}
|
|
79
|
+
async updateMetadata(id, metadata) {
|
|
80
|
+
await this.assetRepository.update(id, { metadata });
|
|
81
|
+
return this.findById(id);
|
|
82
|
+
}
|
|
83
|
+
async updateProcessingMetadata(uniqueId, processingData) {
|
|
84
|
+
const asset = await this.findByUniqueId(uniqueId);
|
|
85
|
+
if (!asset)
|
|
86
|
+
return null;
|
|
87
|
+
const existingMetadata = asset.metadata || {};
|
|
88
|
+
const updatedMetadata = {
|
|
89
|
+
...existingMetadata,
|
|
90
|
+
processing: {
|
|
91
|
+
...existingMetadata.processing,
|
|
92
|
+
...processingData,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
await this.assetRepository.update(asset.id, { metadata: updatedMetadata });
|
|
96
|
+
return this.findById(asset.id);
|
|
97
|
+
}
|
|
98
|
+
async getAll() {
|
|
99
|
+
return this.assetRepository.find({
|
|
100
|
+
order: { createdAt: 'DESC' },
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
async findByUserOrLegacy(userId) {
|
|
104
|
+
return this.assetRepository
|
|
105
|
+
.createQueryBuilder('asset')
|
|
106
|
+
.where('asset.uploadedBy = :userId', { userId })
|
|
107
|
+
.orWhere("asset.metadata->>'user' = :userId", { userId })
|
|
108
|
+
.orderBy('asset.createdAt', 'DESC')
|
|
109
|
+
.getMany();
|
|
110
|
+
}
|
|
111
|
+
async incrementUsageCount(id) {
|
|
112
|
+
await this.assetRepository
|
|
113
|
+
.createQueryBuilder()
|
|
114
|
+
.update()
|
|
115
|
+
.set({
|
|
116
|
+
usageCount: () => 'usage_count + 1',
|
|
117
|
+
lastUsedAt: new Date(),
|
|
118
|
+
})
|
|
119
|
+
.where('id = :id', { id })
|
|
120
|
+
.execute();
|
|
121
|
+
}
|
|
122
|
+
};
|
|
123
|
+
exports.AssetRepository = AssetRepository;
|
|
124
|
+
exports.AssetRepository = AssetRepository = __decorate([
|
|
125
|
+
(0, common_1.Injectable)(),
|
|
126
|
+
__param(0, (0, typeorm_2.InjectRepository)(asset_entity_1.Asset)),
|
|
127
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
128
|
+
], AssetRepository);
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { AudioWaveform, AudioWaveformStatus, AudioWaveformData } from '../entities/audio-waveform.entity';
|
|
4
|
+
export declare class AudioWaveformRepository extends BaseRepository<AudioWaveform> {
|
|
5
|
+
private readonly audioWaveformRepository;
|
|
6
|
+
constructor(audioWaveformRepository: Repository<AudioWaveform>);
|
|
7
|
+
findByProjectId(projectId: string): Promise<AudioWaveform[]>;
|
|
8
|
+
findByStatus(status: AudioWaveformStatus): Promise<AudioWaveform[]>;
|
|
9
|
+
findByAudioS3Key(audioS3Key: string): Promise<AudioWaveform | null>;
|
|
10
|
+
updateWaveform(id: string, data: {
|
|
11
|
+
status?: AudioWaveformStatus;
|
|
12
|
+
audioS3Key?: string;
|
|
13
|
+
data?: AudioWaveformData;
|
|
14
|
+
queueStatus?: string;
|
|
15
|
+
}): Promise<AudioWaveform | null>;
|
|
16
|
+
createWithId(data: {
|
|
17
|
+
id: string;
|
|
18
|
+
projectId?: string;
|
|
19
|
+
audioS3Key?: string;
|
|
20
|
+
status?: AudioWaveformStatus;
|
|
21
|
+
data?: AudioWaveformData;
|
|
22
|
+
queueStatus?: string;
|
|
23
|
+
}): Promise<AudioWaveform>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
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.AudioWaveformRepository = 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 audio_waveform_entity_1 = require("../entities/audio-waveform.entity");
|
|
21
|
+
let AudioWaveformRepository = class AudioWaveformRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(audioWaveformRepository) {
|
|
23
|
+
super(audioWaveformRepository);
|
|
24
|
+
this.audioWaveformRepository = audioWaveformRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByProjectId(projectId) {
|
|
27
|
+
return this.audioWaveformRepository.find({
|
|
28
|
+
where: { projectId },
|
|
29
|
+
order: { createdAt: 'DESC' },
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
async findByStatus(status) {
|
|
33
|
+
return this.audioWaveformRepository.find({
|
|
34
|
+
where: { status },
|
|
35
|
+
order: { createdAt: 'DESC' },
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
async findByAudioS3Key(audioS3Key) {
|
|
39
|
+
return this.audioWaveformRepository.findOne({
|
|
40
|
+
where: { audioS3Key },
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
async updateWaveform(id, data) {
|
|
44
|
+
await this.audioWaveformRepository.update(id, data);
|
|
45
|
+
return this.findById(id);
|
|
46
|
+
}
|
|
47
|
+
async createWithId(data) {
|
|
48
|
+
const entity = this.audioWaveformRepository.create(data);
|
|
49
|
+
return this.audioWaveformRepository.save(entity);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
exports.AudioWaveformRepository = AudioWaveformRepository;
|
|
53
|
+
exports.AudioWaveformRepository = AudioWaveformRepository = __decorate([
|
|
54
|
+
(0, common_1.Injectable)(),
|
|
55
|
+
__param(0, (0, typeorm_2.InjectRepository)(audio_waveform_entity_1.AudioWaveform)),
|
|
56
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
57
|
+
], AudioWaveformRepository);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { AuthSession } from '../entities/auth-session.entity';
|
|
3
|
+
import { BaseRepository } from './base.repository';
|
|
4
|
+
export declare class AuthSessionRepository extends BaseRepository<AuthSession> {
|
|
5
|
+
private readonly sessionRepository;
|
|
6
|
+
constructor(sessionRepository: Repository<AuthSession>);
|
|
7
|
+
findByToken(token: string): Promise<AuthSession | null>;
|
|
8
|
+
findActiveByUserId(userId: string): Promise<AuthSession[]>;
|
|
9
|
+
invalidateSession(id: string): Promise<void>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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.AuthSessionRepository = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
|
+
const typeorm_2 = require("typeorm");
|
|
19
|
+
const auth_session_entity_1 = require("../entities/auth-session.entity");
|
|
20
|
+
const base_repository_1 = require("./base.repository");
|
|
21
|
+
let AuthSessionRepository = class AuthSessionRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(sessionRepository) {
|
|
23
|
+
super(sessionRepository);
|
|
24
|
+
this.sessionRepository = sessionRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByToken(token) {
|
|
27
|
+
return this.sessionRepository.findOne({
|
|
28
|
+
where: { token, isActive: true },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findActiveByUserId(userId) {
|
|
32
|
+
return this.sessionRepository.find({
|
|
33
|
+
where: { userId, isActive: true },
|
|
34
|
+
order: { createdAt: 'DESC' },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async invalidateSession(id) {
|
|
38
|
+
await this.sessionRepository.update(id, { isActive: false });
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.AuthSessionRepository = AuthSessionRepository;
|
|
42
|
+
exports.AuthSessionRepository = AuthSessionRepository = __decorate([
|
|
43
|
+
(0, common_1.Injectable)(),
|
|
44
|
+
__param(0, (0, typeorm_1.InjectRepository)(auth_session_entity_1.AuthSession)),
|
|
45
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
46
|
+
], AuthSessionRepository);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Repository, FindOptionsWhere, FindManyOptions, DeepPartial } from 'typeorm';
|
|
2
|
+
export declare abstract class BaseRepository<T> {
|
|
3
|
+
protected repository: Repository<T>;
|
|
4
|
+
constructor(repository: Repository<T>);
|
|
5
|
+
findById(id: string): Promise<T | null>;
|
|
6
|
+
findAll(options?: FindManyOptions<T>): Promise<T[]>;
|
|
7
|
+
findOne(where: FindOptionsWhere<T>): Promise<T | null>;
|
|
8
|
+
findBy(where: FindOptionsWhere<T>): Promise<T[]>;
|
|
9
|
+
create(data: DeepPartial<T>): Promise<T>;
|
|
10
|
+
update(id: string, data: DeepPartial<T>): Promise<T | null>;
|
|
11
|
+
delete(id: string): Promise<boolean>;
|
|
12
|
+
softDelete(id: string): Promise<boolean>;
|
|
13
|
+
count(where?: FindOptionsWhere<T>): Promise<number>;
|
|
14
|
+
exists(where: FindOptionsWhere<T>): Promise<boolean>;
|
|
15
|
+
save(entity: DeepPartial<T>): Promise<T>;
|
|
16
|
+
saveMany(entities: DeepPartial<T>[]): Promise<T[]>;
|
|
17
|
+
query(sql: string, parameters?: any[]): Promise<any>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseRepository = void 0;
|
|
4
|
+
class BaseRepository {
|
|
5
|
+
constructor(repository) {
|
|
6
|
+
this.repository = repository;
|
|
7
|
+
}
|
|
8
|
+
async findById(id) {
|
|
9
|
+
return this.repository.findOne({ where: { id } });
|
|
10
|
+
}
|
|
11
|
+
async findAll(options) {
|
|
12
|
+
return this.repository.find(options);
|
|
13
|
+
}
|
|
14
|
+
async findOne(where) {
|
|
15
|
+
return this.repository.findOne({ where });
|
|
16
|
+
}
|
|
17
|
+
async findBy(where) {
|
|
18
|
+
return this.repository.findBy(where);
|
|
19
|
+
}
|
|
20
|
+
async create(data) {
|
|
21
|
+
const entity = this.repository.create(data);
|
|
22
|
+
return this.repository.save(entity);
|
|
23
|
+
}
|
|
24
|
+
async update(id, data) {
|
|
25
|
+
await this.repository.update(id, data);
|
|
26
|
+
return this.findById(id);
|
|
27
|
+
}
|
|
28
|
+
async delete(id) {
|
|
29
|
+
const result = await this.repository.delete(id);
|
|
30
|
+
return (result.affected ?? 0) > 0;
|
|
31
|
+
}
|
|
32
|
+
async softDelete(id) {
|
|
33
|
+
const result = await this.repository.softDelete(id);
|
|
34
|
+
return (result.affected ?? 0) > 0;
|
|
35
|
+
}
|
|
36
|
+
async count(where) {
|
|
37
|
+
return this.repository.count({ where });
|
|
38
|
+
}
|
|
39
|
+
async exists(where) {
|
|
40
|
+
const count = await this.repository.count({ where });
|
|
41
|
+
return count > 0;
|
|
42
|
+
}
|
|
43
|
+
async save(entity) {
|
|
44
|
+
return this.repository.save(entity);
|
|
45
|
+
}
|
|
46
|
+
async saveMany(entities) {
|
|
47
|
+
return this.repository.save(entities);
|
|
48
|
+
}
|
|
49
|
+
async query(sql, parameters) {
|
|
50
|
+
return this.repository.query(sql, parameters);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
exports.BaseRepository = BaseRepository;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { Comment } from '../entities/comment.entity';
|
|
4
|
+
export declare class CommentRepository extends BaseRepository<Comment> {
|
|
5
|
+
private readonly commentRepository;
|
|
6
|
+
constructor(commentRepository: Repository<Comment>);
|
|
7
|
+
findByProject(projectId: string): Promise<Comment[]>;
|
|
8
|
+
findByProjectPaginated(projectId: string, page?: number, limit?: number): Promise<Comment[]>;
|
|
9
|
+
findReplies(parentId: string): Promise<Comment[]>;
|
|
10
|
+
toggleResolved(commentId: string): Promise<void>;
|
|
11
|
+
deleteComment(commentId: string): Promise<void>;
|
|
12
|
+
findByUserId(userId: string): Promise<Comment[]>;
|
|
13
|
+
findByUser(userId: string): Promise<Comment[]>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
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.CommentRepository = 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 comment_entity_1 = require("../entities/comment.entity");
|
|
21
|
+
let CommentRepository = class CommentRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(commentRepository) {
|
|
23
|
+
super(commentRepository);
|
|
24
|
+
this.commentRepository = commentRepository;
|
|
25
|
+
}
|
|
26
|
+
async findByProject(projectId) {
|
|
27
|
+
return this.commentRepository.find({
|
|
28
|
+
where: { projectId },
|
|
29
|
+
relations: ['user'],
|
|
30
|
+
order: { createdAt: 'DESC' }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
async findByProjectPaginated(projectId, page = 1, limit = 20) {
|
|
34
|
+
return this.commentRepository.find({
|
|
35
|
+
where: {
|
|
36
|
+
projectId,
|
|
37
|
+
},
|
|
38
|
+
relations: ['user'],
|
|
39
|
+
order: { createdAt: 'DESC' },
|
|
40
|
+
skip: (page - 1) * limit,
|
|
41
|
+
take: limit,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
async findReplies(parentId) {
|
|
45
|
+
return this.commentRepository.find({
|
|
46
|
+
where: { parentId },
|
|
47
|
+
relations: ['user'],
|
|
48
|
+
order: { createdAt: 'ASC' }
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
async toggleResolved(commentId) {
|
|
52
|
+
const comment = await this.commentRepository.findOne({ where: { id: commentId } });
|
|
53
|
+
if (comment) {
|
|
54
|
+
comment.isResolved = !comment.isResolved;
|
|
55
|
+
await this.commentRepository.save(comment);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async deleteComment(commentId) {
|
|
59
|
+
await this.commentRepository.delete(commentId);
|
|
60
|
+
}
|
|
61
|
+
async findByUserId(userId) {
|
|
62
|
+
return this.commentRepository.find({
|
|
63
|
+
where: { userId },
|
|
64
|
+
order: { createdAt: 'DESC' }
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async findByUser(userId) {
|
|
68
|
+
return this.findByUserId(userId);
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
exports.CommentRepository = CommentRepository;
|
|
72
|
+
exports.CommentRepository = CommentRepository = __decorate([
|
|
73
|
+
(0, common_1.Injectable)(),
|
|
74
|
+
__param(0, (0, typeorm_2.InjectRepository)(comment_entity_1.Comment)),
|
|
75
|
+
__metadata("design:paramtypes", [typeorm_1.Repository])
|
|
76
|
+
], CommentRepository);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { CreditTransaction } from '../entities/credit-transaction.entity';
|
|
4
|
+
export declare class CreditTransactionRepository extends BaseRepository<CreditTransaction> {
|
|
5
|
+
constructor(repository: Repository<CreditTransaction>);
|
|
6
|
+
findByUserId(userId: string): Promise<CreditTransaction[]>;
|
|
7
|
+
findByType(type: string): Promise<CreditTransaction[]>;
|
|
8
|
+
getUserBalance(userId: string): Promise<number>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
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.CreditTransactionRepository = 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 credit_transaction_entity_1 = require("../entities/credit-transaction.entity");
|
|
21
|
+
let CreditTransactionRepository = class CreditTransactionRepository extends base_repository_1.BaseRepository {
|
|
22
|
+
constructor(repository) {
|
|
23
|
+
super(repository);
|
|
24
|
+
}
|
|
25
|
+
async findByUserId(userId) {
|
|
26
|
+
return this.repository.find({
|
|
27
|
+
where: { userId },
|
|
28
|
+
order: { createdAt: 'DESC' },
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
async findByType(type) {
|
|
32
|
+
return this.repository.find({
|
|
33
|
+
where: { type },
|
|
34
|
+
order: { createdAt: 'DESC' },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
async getUserBalance(userId) {
|
|
38
|
+
const transactions = await this.findByUserId(userId);
|
|
39
|
+
return transactions.reduce((sum, t) => {
|
|
40
|
+
return t.type === 'usage' ? sum - Number(t.amount) : sum + Number(t.amount);
|
|
41
|
+
}, 0);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
exports.CreditTransactionRepository = CreditTransactionRepository;
|
|
45
|
+
exports.CreditTransactionRepository = CreditTransactionRepository = __decorate([
|
|
46
|
+
(0, common_1.Injectable)(),
|
|
47
|
+
__param(0, (0, typeorm_1.InjectRepository)(credit_transaction_entity_1.CreditTransaction)),
|
|
48
|
+
__metadata("design:paramtypes", [typeorm_2.Repository])
|
|
49
|
+
], CreditTransactionRepository);
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { BaseRepository } from './base.repository';
|
|
3
|
+
import { EditorProject, ProjectStatus } from '../entities/editor-project.entity';
|
|
4
|
+
export declare class EditorProjectRepository extends BaseRepository<EditorProject> {
|
|
5
|
+
private readonly projectRepository;
|
|
6
|
+
constructor(projectRepository: Repository<EditorProject>);
|
|
7
|
+
findByWorkspace(workspaceId: string): Promise<EditorProject[]>;
|
|
8
|
+
findByOwner(ownerId: string): Promise<EditorProject[]>;
|
|
9
|
+
findByStatus(workspaceId: string, status: ProjectStatus): Promise<EditorProject[]>;
|
|
10
|
+
findRecent(ownerId: string, limit?: number): Promise<EditorProject[]>;
|
|
11
|
+
findFavorites(ownerId: string): Promise<EditorProject[]>;
|
|
12
|
+
findTemplates(): Promise<EditorProject[]>;
|
|
13
|
+
findPremiumTemplates(): Promise<EditorProject[]>;
|
|
14
|
+
updateLastOpened(projectId: string): Promise<void>;
|
|
15
|
+
toggleFavorite(projectId: string): Promise<void>;
|
|
16
|
+
incrementTemplateUsage(projectId: string): Promise<void>;
|
|
17
|
+
findByTemplateCategory(category: string): Promise<EditorProject[]>;
|
|
18
|
+
findByTag(tag: string): Promise<EditorProject[]>;
|
|
19
|
+
getAllTagsByOwner(ownerId: string): Promise<string[]>;
|
|
20
|
+
findByVisibility(visibility: string): Promise<EditorProject[]>;
|
|
21
|
+
findByCollaboratorId(collaboratorId: string): Promise<EditorProject[]>;
|
|
22
|
+
findByTitle(title: string): Promise<EditorProject[]>;
|
|
23
|
+
updateThumbnailUrl(projectId: string, thumbnailUrl: string): Promise<void>;
|
|
24
|
+
duplicateProject(projectId: string, newTitle?: string): Promise<EditorProject>;
|
|
25
|
+
countByOwner(ownerId: string): Promise<number>;
|
|
26
|
+
findByOwnerId(ownerId: string): Promise<EditorProject[]>;
|
|
27
|
+
findByUserAndWorkspace(ownerId: string, workspaceId: string): Promise<EditorProject[]>;
|
|
28
|
+
findByWorkspaceId(workspaceId: string): Promise<EditorProject[]>;
|
|
29
|
+
findRecentlyOpened(ownerId: string, limit?: number): Promise<EditorProject[]>;
|
|
30
|
+
findByGlobalStatus(status: ProjectStatus): Promise<EditorProject[]>;
|
|
31
|
+
}
|