clhq-postgres-module 1.1.0-alpha.173 → 1.1.0-alpha.175
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.local.d.ts +3 -0
- package/dist/config/data-source.local.js +15 -0
- package/dist/migrations/1713000000001-InitialSchema.d.ts +6 -0
- package/dist/migrations/1713000000001-InitialSchema.js +196 -0
- package/dist/migrations/1713000000002-CoreBusinessTables.d.ts +6 -0
- package/dist/migrations/1713000000002-CoreBusinessTables.js +198 -0
- package/dist/migrations/1713000000003-RemainingCoreTables.d.ts +6 -0
- package/dist/migrations/1713000000003-RemainingCoreTables.js +160 -0
- package/dist/migrations/1713000000004-MediaConfigReferenceTables.d.ts +6 -0
- package/dist/migrations/1713000000004-MediaConfigReferenceTables.js +241 -0
- package/dist/migrations/1713000000005-VideoMediaTables.d.ts +6 -0
- package/dist/migrations/1713000000005-VideoMediaTables.js +98 -0
- package/dist/migrations/1713000000006-AddUserReferralColumns.d.ts +6 -0
- package/dist/migrations/1713000000006-AddUserReferralColumns.js +55 -0
- package/dist/migrations/1713000000007-AddUserProfileColumns.d.ts +6 -0
- package/dist/migrations/1713000000007-AddUserProfileColumns.js +73 -0
- package/dist/migrations/1713000000008-AddBillingInfoColumn.d.ts +6 -0
- package/dist/migrations/1713000000008-AddBillingInfoColumn.js +23 -0
- package/dist/migrations/1713000000009-AddWorkspaceStorageColumns.d.ts +6 -0
- package/dist/migrations/1713000000009-AddWorkspaceStorageColumns.js +49 -0
- package/dist/migrations/1713000000010-AddUniqueIdToAssets.d.ts +6 -0
- package/dist/migrations/1713000000010-AddUniqueIdToAssets.js +29 -0
- package/dist/migrations/{1713000000003-AddDescriptionToBrandKits.d.ts → 1713000000011-CreateReferralEventsTable.d.ts} +1 -1
- package/dist/migrations/1713000000011-CreateReferralEventsTable.js +72 -0
- package/dist/migrations/1713000000012-ExtendCreditTransactions.d.ts +6 -0
- package/dist/migrations/1713000000012-ExtendCreditTransactions.js +70 -0
- package/dist/migrations/1713000000013-AiVideoMakerTables.d.ts +6 -0
- package/dist/migrations/1713000000013-AiVideoMakerTables.js +122 -0
- package/dist/migrations/1713000000014-SeedReferralRewardRules.d.ts +6 -0
- package/dist/migrations/1713000000014-SeedReferralRewardRules.js +135 -0
- package/dist/migrations/{1713000000001-CreateSocialConnectionTables.d.ts → 1713000000015-CreateCreditAllocationsTable.d.ts} +1 -1
- package/dist/migrations/1713000000015-CreateCreditAllocationsTable.js +49 -0
- package/dist/migrations/1713000000016-CreateCreditConsumptionLogTable.d.ts +6 -0
- package/dist/migrations/1713000000016-CreateCreditConsumptionLogTable.js +55 -0
- package/dist/migrations/1713000000017-UpdateSubscriptionPlansCreditFields.d.ts +6 -0
- package/dist/migrations/1713000000017-UpdateSubscriptionPlansCreditFields.js +121 -0
- package/dist/migrations/{1713000000004-CreateKlingGenerationTables.d.ts → 1713000000018-CreateVideoProcessingTables.d.ts} +1 -1
- package/dist/migrations/1713000000018-CreateVideoProcessingTables.js +111 -0
- package/dist/migrations/1713000000019-CreateAudioWaveformsTable.d.ts +6 -0
- package/dist/migrations/1713000000019-CreateAudioWaveformsTable.js +62 -0
- package/dist/migrations/1713000000020-EnablePgvectorExtension.d.ts +6 -0
- package/dist/migrations/1713000000020-EnablePgvectorExtension.js +30 -0
- package/dist/migrations/1713000000021-CreateMetadataServiceTables.d.ts +6 -0
- package/dist/migrations/1713000000021-CreateMetadataServiceTables.js +410 -0
- package/dist/migrations/1713000000022-OptimizeMetadataIndexes.d.ts +6 -0
- package/dist/migrations/1713000000022-OptimizeMetadataIndexes.js +334 -0
- package/dist/migrations/1713000000023-CreateSceneGeneratorTables.d.ts +6 -0
- package/dist/migrations/1713000000023-CreateSceneGeneratorTables.js +97 -0
- package/dist/migrations/1713000000024-CreateRemotionRendersTable.d.ts +6 -0
- package/dist/migrations/1713000000024-CreateRemotionRendersTable.js +71 -0
- package/dist/migrations/1713000000025-ExtendCreditAllocationSystem.d.ts +6 -0
- package/dist/migrations/1713000000025-ExtendCreditAllocationSystem.js +114 -0
- package/dist/migrations/{1713000000002-AddIsActiveToWorkspaceMembers.d.ts → 1713000000026-AddStatusToCreditTransactions.d.ts} +1 -1
- package/dist/migrations/1713000000026-AddStatusToCreditTransactions.js +63 -0
- package/dist/migrations/1713000000027-MigrateProjectDurationToSeconds.d.ts +6 -0
- package/dist/migrations/1713000000027-MigrateProjectDurationToSeconds.js +43 -0
- package/dist/migrations/1713000000028-CreateSceneTimelineTables.d.ts +6 -0
- package/dist/migrations/1713000000028-CreateSceneTimelineTables.js +159 -0
- package/dist/migrations/1713000000029-ConvertScenesToSeconds.d.ts +6 -0
- package/dist/migrations/1713000000029-ConvertScenesToSeconds.js +106 -0
- package/dist/migrations/1713000000030-ChangeDurationToDecimal.d.ts +6 -0
- package/dist/migrations/1713000000030-ChangeDurationToDecimal.js +34 -0
- package/dist/migrations/1713000000031-CreateVideoSubtitlesTable.d.ts +6 -0
- package/dist/migrations/1713000000031-CreateVideoSubtitlesTable.js +51 -0
- package/dist/migrations/1713000000032-AddWebpThumbnailColumns.d.ts +6 -0
- package/dist/migrations/1713000000032-AddWebpThumbnailColumns.js +58 -0
- package/dist/migrations/1713000000033-AddFormatToProjectScenes.d.ts +6 -0
- package/dist/migrations/1713000000033-AddFormatToProjectScenes.js +77 -0
- package/dist/migrations/1713000000034-FixProjectScenesUniqueConstraint.d.ts +6 -0
- package/dist/migrations/1713000000034-FixProjectScenesUniqueConstraint.js +39 -0
- package/dist/migrations/1713000000035-AddMissingVideoSubtitlesColumns.d.ts +6 -0
- package/dist/migrations/1713000000035-AddMissingVideoSubtitlesColumns.js +29 -0
- package/dist/migrations/1713000000036-AddRemotionRenderCreditColumns.d.ts +6 -0
- package/dist/migrations/1713000000036-AddRemotionRenderCreditColumns.js +50 -0
- package/dist/migrations/1713000000037-CreateProjectSharesTable.d.ts +6 -0
- package/dist/migrations/1713000000037-CreateProjectSharesTable.js +60 -0
- package/dist/migrations/1713000000038-EnableRlsOnAllTables.d.ts +6 -0
- package/dist/migrations/1713000000038-EnableRlsOnAllTables.js +97 -0
- package/dist/migrations/1713000000039-AiVideoMakerKlingFreeColumns.d.ts +6 -0
- package/dist/migrations/1713000000039-AiVideoMakerKlingFreeColumns.js +85 -0
- package/dist/migrations/1713000000040-CreateBrandKitsTable.d.ts +6 -0
- package/dist/migrations/1713000000040-CreateBrandKitsTable.js +44 -0
- package/dist/migrations/1713000000041-CreateBrandAssetsTable.d.ts +6 -0
- package/dist/migrations/1713000000041-CreateBrandAssetsTable.js +57 -0
- package/dist/migrations/1713000000042-AddActiveBrandKitToWorkspaces.d.ts +6 -0
- package/dist/migrations/1713000000042-AddActiveBrandKitToWorkspaces.js +43 -0
- package/dist/migrations/1713000000043-CreateAssetCategoriesTable.d.ts +6 -0
- package/dist/migrations/1713000000043-CreateAssetCategoriesTable.js +47 -0
- package/dist/migrations/1713000000044-AddEnforcementModeToWorkspaces.d.ts +6 -0
- package/dist/migrations/1713000000044-AddEnforcementModeToWorkspaces.js +21 -0
- package/dist/migrations/1713000000045-CreateProjectBrandOverridesTable.d.ts +6 -0
- package/dist/migrations/1713000000045-CreateProjectBrandOverridesTable.js +33 -0
- package/dist/migrations/1713000000046-AddPdfRenderSupport.d.ts +6 -0
- package/dist/migrations/1713000000046-AddPdfRenderSupport.js +14 -0
- package/dist/migrations/1713000000047-CreateSocialConnectionTables.d.ts +6 -0
- package/dist/migrations/{1713000000001-CreateSocialConnectionTables.js → 1713000000047-CreateSocialConnectionTables.js} +4 -4
- package/dist/migrations/1713000000048-AddIsActiveToWorkspaceMembers.d.ts +6 -0
- package/dist/migrations/{1713000000002-AddIsActiveToWorkspaceMembers.js → 1713000000048-AddIsActiveToWorkspaceMembers.js} +4 -4
- package/dist/migrations/1713000000049-AddDescriptionToBrandKits.d.ts +6 -0
- package/dist/migrations/{1713000000003-AddDescriptionToBrandKits.js → 1713000000049-AddDescriptionToBrandKits.js} +4 -4
- package/dist/migrations/1713000000050-CreateKlingGenerationTables.d.ts +6 -0
- package/dist/migrations/{1713000000004-CreateKlingGenerationTables.js → 1713000000050-CreateKlingGenerationTables.js} +7 -5
- package/dist/migrations/1713000000051-AddAiVideoSceneCanvasIdsAndThumbnail.d.ts +6 -0
- package/dist/migrations/1713000000051-AddAiVideoSceneCanvasIdsAndThumbnail.js +49 -0
- package/dist/migrations/1713000000052-AddAiVideoSourceMetadataAndMusicMeta.d.ts +6 -0
- package/dist/migrations/1713000000052-AddAiVideoSourceMetadataAndMusicMeta.js +67 -0
- package/package.json +8 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateVideoProcessingTables1713000000018 = void 0;
|
|
4
|
+
class CreateVideoProcessingTables1713000000018 {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'CreateVideoProcessingTables1713000000018';
|
|
7
|
+
}
|
|
8
|
+
async up(queryRunner) {
|
|
9
|
+
await queryRunner.query(`
|
|
10
|
+
DO $$ BEGIN
|
|
11
|
+
CREATE TYPE video_transcode_status AS ENUM ('NEW', 'PROCESSING', 'SUCCESS', 'ERROR');
|
|
12
|
+
EXCEPTION
|
|
13
|
+
WHEN duplicate_object THEN null;
|
|
14
|
+
END $$
|
|
15
|
+
`);
|
|
16
|
+
await queryRunner.query(`
|
|
17
|
+
DO $$ BEGIN
|
|
18
|
+
CREATE TYPE video_filmstrip_status AS ENUM ('NEW', 'PROCESSING', 'SUCCESS', 'ERROR');
|
|
19
|
+
EXCEPTION
|
|
20
|
+
WHEN duplicate_object THEN null;
|
|
21
|
+
END $$
|
|
22
|
+
`);
|
|
23
|
+
await queryRunner.query(`
|
|
24
|
+
CREATE TABLE IF NOT EXISTS video_transcodes (
|
|
25
|
+
id VARCHAR(255) PRIMARY KEY,
|
|
26
|
+
project_id VARCHAR(255),
|
|
27
|
+
s3_key TEXT,
|
|
28
|
+
status video_transcode_status DEFAULT 'NEW',
|
|
29
|
+
data JSONB,
|
|
30
|
+
queue_status VARCHAR(50),
|
|
31
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
32
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
33
|
+
)
|
|
34
|
+
`);
|
|
35
|
+
await queryRunner.query(`
|
|
36
|
+
CREATE INDEX IF NOT EXISTS idx_video_transcodes_project_id ON video_transcodes(project_id)
|
|
37
|
+
`);
|
|
38
|
+
await queryRunner.query(`
|
|
39
|
+
CREATE INDEX IF NOT EXISTS idx_video_transcodes_status ON video_transcodes(status)
|
|
40
|
+
`);
|
|
41
|
+
await queryRunner.query(`
|
|
42
|
+
CREATE TABLE IF NOT EXISTS video_filmstrips (
|
|
43
|
+
id VARCHAR(255) PRIMARY KEY,
|
|
44
|
+
project_id VARCHAR(255),
|
|
45
|
+
video_s3_key TEXT,
|
|
46
|
+
status video_filmstrip_status DEFAULT 'NEW',
|
|
47
|
+
data JSONB,
|
|
48
|
+
queue_status VARCHAR(50),
|
|
49
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
50
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
51
|
+
)
|
|
52
|
+
`);
|
|
53
|
+
await queryRunner.query(`
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_video_filmstrips_project_id ON video_filmstrips(project_id)
|
|
55
|
+
`);
|
|
56
|
+
await queryRunner.query(`
|
|
57
|
+
CREATE INDEX IF NOT EXISTS idx_video_filmstrips_status ON video_filmstrips(status)
|
|
58
|
+
`);
|
|
59
|
+
await queryRunner.query(`
|
|
60
|
+
COMMENT ON TABLE video_transcodes IS 'Stores video transcoding jobs and their results'
|
|
61
|
+
`);
|
|
62
|
+
await queryRunner.query(`
|
|
63
|
+
COMMENT ON TABLE video_filmstrips IS 'Stores video filmstrip generation jobs and their results'
|
|
64
|
+
`);
|
|
65
|
+
await queryRunner.query(`
|
|
66
|
+
COMMENT ON COLUMN video_transcodes.id IS 'Unique identifier for the transcode job'
|
|
67
|
+
`);
|
|
68
|
+
await queryRunner.query(`
|
|
69
|
+
COMMENT ON COLUMN video_transcodes.project_id IS 'Reference to the editor project'
|
|
70
|
+
`);
|
|
71
|
+
await queryRunner.query(`
|
|
72
|
+
COMMENT ON COLUMN video_transcodes.s3_key IS 'S3 key of the transcoded output'
|
|
73
|
+
`);
|
|
74
|
+
await queryRunner.query(`
|
|
75
|
+
COMMENT ON COLUMN video_transcodes.status IS 'Current status of the transcode job'
|
|
76
|
+
`);
|
|
77
|
+
await queryRunner.query(`
|
|
78
|
+
COMMENT ON COLUMN video_transcodes.data IS 'Additional metadata and results in JSON format'
|
|
79
|
+
`);
|
|
80
|
+
await queryRunner.query(`
|
|
81
|
+
COMMENT ON COLUMN video_transcodes.queue_status IS 'Status in the processing queue'
|
|
82
|
+
`);
|
|
83
|
+
await queryRunner.query(`
|
|
84
|
+
COMMENT ON COLUMN video_filmstrips.id IS 'Unique identifier for the filmstrip job'
|
|
85
|
+
`);
|
|
86
|
+
await queryRunner.query(`
|
|
87
|
+
COMMENT ON COLUMN video_filmstrips.project_id IS 'Reference to the editor project'
|
|
88
|
+
`);
|
|
89
|
+
await queryRunner.query(`
|
|
90
|
+
COMMENT ON COLUMN video_filmstrips.video_s3_key IS 'S3 key of the source video'
|
|
91
|
+
`);
|
|
92
|
+
await queryRunner.query(`
|
|
93
|
+
COMMENT ON COLUMN video_filmstrips.status IS 'Current status of the filmstrip generation job'
|
|
94
|
+
`);
|
|
95
|
+
await queryRunner.query(`
|
|
96
|
+
COMMENT ON COLUMN video_filmstrips.data IS 'Filmstrip metadata including sprite and manifest URLs'
|
|
97
|
+
`);
|
|
98
|
+
await queryRunner.query(`
|
|
99
|
+
COMMENT ON COLUMN video_filmstrips.queue_status IS 'Status in the processing queue'
|
|
100
|
+
`);
|
|
101
|
+
}
|
|
102
|
+
async down(queryRunner) {
|
|
103
|
+
await queryRunner.query(`
|
|
104
|
+
DROP TABLE IF EXISTS video_filmstrips
|
|
105
|
+
`);
|
|
106
|
+
await queryRunner.query(`
|
|
107
|
+
DROP TABLE IF EXISTS video_transcodes
|
|
108
|
+
`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.CreateVideoProcessingTables1713000000018 = CreateVideoProcessingTables1713000000018;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateAudioWaveformsTable1713000000019 = void 0;
|
|
4
|
+
class CreateAudioWaveformsTable1713000000019 {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'CreateAudioWaveformsTable1713000000019';
|
|
7
|
+
}
|
|
8
|
+
async up(queryRunner) {
|
|
9
|
+
await queryRunner.query(`
|
|
10
|
+
DO $$ BEGIN
|
|
11
|
+
CREATE TYPE audio_waveform_status AS ENUM ('NEW', 'PROCESSING', 'SUCCESS', 'ERROR');
|
|
12
|
+
EXCEPTION
|
|
13
|
+
WHEN duplicate_object THEN null;
|
|
14
|
+
END $$
|
|
15
|
+
`);
|
|
16
|
+
await queryRunner.query(`
|
|
17
|
+
CREATE TABLE IF NOT EXISTS audio_waveforms (
|
|
18
|
+
id VARCHAR(255) PRIMARY KEY,
|
|
19
|
+
project_id VARCHAR(255),
|
|
20
|
+
audio_s3_key TEXT,
|
|
21
|
+
status audio_waveform_status DEFAULT 'NEW',
|
|
22
|
+
data JSONB,
|
|
23
|
+
queue_status VARCHAR(50),
|
|
24
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
25
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
26
|
+
)
|
|
27
|
+
`);
|
|
28
|
+
await queryRunner.query(`
|
|
29
|
+
CREATE INDEX IF NOT EXISTS idx_audio_waveforms_project_id ON audio_waveforms(project_id)
|
|
30
|
+
`);
|
|
31
|
+
await queryRunner.query(`
|
|
32
|
+
CREATE INDEX IF NOT EXISTS idx_audio_waveforms_status ON audio_waveforms(status)
|
|
33
|
+
`);
|
|
34
|
+
await queryRunner.query(`
|
|
35
|
+
COMMENT ON TABLE audio_waveforms IS 'Stores audio waveform generation jobs and their results'
|
|
36
|
+
`);
|
|
37
|
+
await queryRunner.query(`
|
|
38
|
+
COMMENT ON COLUMN audio_waveforms.id IS 'Unique identifier for the waveform job (uniqueId from asset)'
|
|
39
|
+
`);
|
|
40
|
+
await queryRunner.query(`
|
|
41
|
+
COMMENT ON COLUMN audio_waveforms.project_id IS 'Reference to the editor project'
|
|
42
|
+
`);
|
|
43
|
+
await queryRunner.query(`
|
|
44
|
+
COMMENT ON COLUMN audio_waveforms.audio_s3_key IS 'S3 key of the source audio file'
|
|
45
|
+
`);
|
|
46
|
+
await queryRunner.query(`
|
|
47
|
+
COMMENT ON COLUMN audio_waveforms.status IS 'Current status of the waveform generation job'
|
|
48
|
+
`);
|
|
49
|
+
await queryRunner.query(`
|
|
50
|
+
COMMENT ON COLUMN audio_waveforms.data IS 'Waveform metadata including URL, peaks, duration, sample rate'
|
|
51
|
+
`);
|
|
52
|
+
await queryRunner.query(`
|
|
53
|
+
COMMENT ON COLUMN audio_waveforms.queue_status IS 'Status in the processing queue'
|
|
54
|
+
`);
|
|
55
|
+
}
|
|
56
|
+
async down(queryRunner) {
|
|
57
|
+
await queryRunner.query(`
|
|
58
|
+
DROP TABLE IF EXISTS audio_waveforms
|
|
59
|
+
`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.CreateAudioWaveformsTable1713000000019 = CreateAudioWaveformsTable1713000000019;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnablePgvectorExtension1713000000020 = void 0;
|
|
4
|
+
class EnablePgvectorExtension1713000000020 {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'EnablePgvectorExtension1713000000020';
|
|
7
|
+
}
|
|
8
|
+
async up(queryRunner) {
|
|
9
|
+
await queryRunner.query(`
|
|
10
|
+
CREATE EXTENSION IF NOT EXISTS vector
|
|
11
|
+
`);
|
|
12
|
+
await queryRunner.query(`
|
|
13
|
+
DO $$
|
|
14
|
+
BEGIN
|
|
15
|
+
IF NOT EXISTS (
|
|
16
|
+
SELECT 1 FROM pg_extension WHERE extname = 'vector'
|
|
17
|
+
) THEN
|
|
18
|
+
RAISE EXCEPTION 'pgvector extension failed to install';
|
|
19
|
+
END IF;
|
|
20
|
+
RAISE NOTICE 'pgvector extension enabled successfully';
|
|
21
|
+
END $$
|
|
22
|
+
`);
|
|
23
|
+
await queryRunner.query(`
|
|
24
|
+
COMMENT ON EXTENSION vector IS 'Vector similarity search extension for AI embeddings'
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
async down(queryRunner) {
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
exports.EnablePgvectorExtension1713000000020 = EnablePgvectorExtension1713000000020;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { MigrationInterface, QueryRunner } from 'typeorm';
|
|
2
|
+
export declare class CreateMetadataServiceTables1713000000021 implements MigrationInterface {
|
|
3
|
+
name: string;
|
|
4
|
+
up(queryRunner: QueryRunner): Promise<void>;
|
|
5
|
+
down(queryRunner: QueryRunner): Promise<void>;
|
|
6
|
+
}
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateMetadataServiceTables1713000000021 = void 0;
|
|
4
|
+
class CreateMetadataServiceTables1713000000021 {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.name = 'CreateMetadataServiceTables1713000000021';
|
|
7
|
+
}
|
|
8
|
+
async up(queryRunner) {
|
|
9
|
+
await queryRunner.query(`
|
|
10
|
+
DO $$ BEGIN
|
|
11
|
+
CREATE TYPE asset_metadata_status AS ENUM ('pending', 'processing', 'completed', 'failed');
|
|
12
|
+
EXCEPTION
|
|
13
|
+
WHEN duplicate_object THEN null;
|
|
14
|
+
END $$
|
|
15
|
+
`);
|
|
16
|
+
await queryRunner.query(`
|
|
17
|
+
DO $$ BEGIN
|
|
18
|
+
CREATE TYPE embedding_entity_type AS ENUM ('asset', 'project', 'user', 'text_snippet');
|
|
19
|
+
EXCEPTION
|
|
20
|
+
WHEN duplicate_object THEN null;
|
|
21
|
+
END $$
|
|
22
|
+
`);
|
|
23
|
+
await queryRunner.query(`
|
|
24
|
+
DO $$ BEGIN
|
|
25
|
+
CREATE TYPE embedding_type AS ENUM ('text', 'visual', 'audio', 'combined');
|
|
26
|
+
EXCEPTION
|
|
27
|
+
WHEN duplicate_object THEN null;
|
|
28
|
+
END $$
|
|
29
|
+
`);
|
|
30
|
+
await queryRunner.query(`
|
|
31
|
+
DO $$ BEGIN
|
|
32
|
+
CREATE TYPE metadata_activity_action AS ENUM (
|
|
33
|
+
'asset_uploaded', 'asset_metadata_extracted', 'asset_ai_enriched',
|
|
34
|
+
'asset_embedding_generated', 'asset_used_in_project', 'asset_tagged', 'asset_deleted',
|
|
35
|
+
'project_created', 'project_updated', 'project_exported',
|
|
36
|
+
'project_metadata_updated', 'project_embedding_generated',
|
|
37
|
+
'edit_clip_added', 'edit_transition_added', 'edit_effect_added',
|
|
38
|
+
'edit_text_added', 'edit_audio_added', 'edit_trim', 'edit_undo', 'edit_redo',
|
|
39
|
+
'ai_context_requested', 'ai_suggestion_accepted', 'ai_suggestion_rejected', 'ai_content_generated',
|
|
40
|
+
'user_context_aggregated', 'user_preferences_updated'
|
|
41
|
+
);
|
|
42
|
+
EXCEPTION
|
|
43
|
+
WHEN duplicate_object THEN null;
|
|
44
|
+
END $$
|
|
45
|
+
`);
|
|
46
|
+
await queryRunner.query(`
|
|
47
|
+
DO $$ BEGIN
|
|
48
|
+
CREATE TYPE metadata_activity_source AS ENUM ('user', 'system', 'ai_auto', 'ai_manual');
|
|
49
|
+
EXCEPTION
|
|
50
|
+
WHEN duplicate_object THEN null;
|
|
51
|
+
END $$
|
|
52
|
+
`);
|
|
53
|
+
await queryRunner.query(`
|
|
54
|
+
CREATE TABLE IF NOT EXISTS asset_metadata (
|
|
55
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
56
|
+
asset_id UUID NOT NULL,
|
|
57
|
+
user_id UUID NOT NULL,
|
|
58
|
+
workspace_id UUID NOT NULL,
|
|
59
|
+
technical JSONB,
|
|
60
|
+
content JSONB,
|
|
61
|
+
audio_features JSONB,
|
|
62
|
+
tags TEXT[],
|
|
63
|
+
description TEXT,
|
|
64
|
+
category TEXT,
|
|
65
|
+
usage_count INTEGER DEFAULT 0,
|
|
66
|
+
last_used_at TIMESTAMP WITH TIME ZONE,
|
|
67
|
+
projects_used_in TEXT[],
|
|
68
|
+
content_embedding JSONB,
|
|
69
|
+
embedding_model VARCHAR(100),
|
|
70
|
+
embedding_version VARCHAR(50),
|
|
71
|
+
status asset_metadata_status DEFAULT 'pending',
|
|
72
|
+
processing_error TEXT,
|
|
73
|
+
ai_processed_at TIMESTAMP WITH TIME ZONE,
|
|
74
|
+
embedding_generated_at TIMESTAMP WITH TIME ZONE,
|
|
75
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
76
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
77
|
+
CONSTRAINT fk_asset_metadata_asset FOREIGN KEY (asset_id) REFERENCES assets(id) ON DELETE CASCADE,
|
|
78
|
+
CONSTRAINT fk_asset_metadata_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
79
|
+
CONSTRAINT fk_asset_metadata_workspace FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE
|
|
80
|
+
)
|
|
81
|
+
`);
|
|
82
|
+
await queryRunner.query(`
|
|
83
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_asset_metadata_asset_id ON asset_metadata(asset_id)
|
|
84
|
+
`);
|
|
85
|
+
await queryRunner.query(`
|
|
86
|
+
CREATE INDEX IF NOT EXISTS idx_asset_metadata_user_id ON asset_metadata(user_id)
|
|
87
|
+
`);
|
|
88
|
+
await queryRunner.query(`
|
|
89
|
+
CREATE INDEX IF NOT EXISTS idx_asset_metadata_workspace_id ON asset_metadata(workspace_id)
|
|
90
|
+
`);
|
|
91
|
+
await queryRunner.query(`
|
|
92
|
+
CREATE INDEX IF NOT EXISTS idx_asset_metadata_status ON asset_metadata(status)
|
|
93
|
+
`);
|
|
94
|
+
await queryRunner.query(`
|
|
95
|
+
CREATE INDEX IF NOT EXISTS idx_asset_metadata_tags ON asset_metadata USING GIN(tags)
|
|
96
|
+
`);
|
|
97
|
+
await queryRunner.query(`
|
|
98
|
+
CREATE INDEX IF NOT EXISTS idx_asset_metadata_content ON asset_metadata USING GIN(content jsonb_path_ops)
|
|
99
|
+
`);
|
|
100
|
+
await queryRunner.query(`
|
|
101
|
+
CREATE TABLE IF NOT EXISTS project_metadata (
|
|
102
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
103
|
+
project_id VARCHAR(255) NOT NULL,
|
|
104
|
+
user_id UUID NOT NULL,
|
|
105
|
+
workspace_id UUID NOT NULL,
|
|
106
|
+
project_type VARCHAR(100),
|
|
107
|
+
target_platform VARCHAR(100),
|
|
108
|
+
target_duration_ms INTEGER,
|
|
109
|
+
mood VARCHAR(100),
|
|
110
|
+
style VARCHAR(100),
|
|
111
|
+
genre VARCHAR(100),
|
|
112
|
+
color_palette JSONB,
|
|
113
|
+
brand_guidelines JSONB,
|
|
114
|
+
composition JSONB,
|
|
115
|
+
style_fingerprint JSONB,
|
|
116
|
+
edit_sessions_count INTEGER DEFAULT 0,
|
|
117
|
+
total_edit_time_ms BIGINT DEFAULT 0,
|
|
118
|
+
assets_used TEXT[],
|
|
119
|
+
effects_used JSONB,
|
|
120
|
+
export_history JSONB,
|
|
121
|
+
ai_suggestions_applied JSONB,
|
|
122
|
+
generated_content JSONB,
|
|
123
|
+
project_embedding JSONB,
|
|
124
|
+
embedding_generated_at TIMESTAMP WITH TIME ZONE,
|
|
125
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
126
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
127
|
+
CONSTRAINT fk_project_metadata_project FOREIGN KEY (project_id) REFERENCES editor_projects(id) ON DELETE CASCADE,
|
|
128
|
+
CONSTRAINT fk_project_metadata_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
129
|
+
CONSTRAINT fk_project_metadata_workspace FOREIGN KEY (workspace_id) REFERENCES workspaces(id) ON DELETE CASCADE
|
|
130
|
+
)
|
|
131
|
+
`);
|
|
132
|
+
await queryRunner.query(`
|
|
133
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_project_metadata_project_id ON project_metadata(project_id)
|
|
134
|
+
`);
|
|
135
|
+
await queryRunner.query(`
|
|
136
|
+
CREATE INDEX IF NOT EXISTS idx_project_metadata_user_id ON project_metadata(user_id)
|
|
137
|
+
`);
|
|
138
|
+
await queryRunner.query(`
|
|
139
|
+
CREATE INDEX IF NOT EXISTS idx_project_metadata_workspace_id ON project_metadata(workspace_id)
|
|
140
|
+
`);
|
|
141
|
+
await queryRunner.query(`
|
|
142
|
+
CREATE INDEX IF NOT EXISTS idx_project_metadata_project_type ON project_metadata(project_type)
|
|
143
|
+
`);
|
|
144
|
+
await queryRunner.query(`
|
|
145
|
+
CREATE INDEX IF NOT EXISTS idx_project_metadata_style ON project_metadata(style)
|
|
146
|
+
`);
|
|
147
|
+
await queryRunner.query(`
|
|
148
|
+
CREATE TABLE IF NOT EXISTS user_context (
|
|
149
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
150
|
+
user_id UUID NOT NULL,
|
|
151
|
+
preferred_styles TEXT[],
|
|
152
|
+
preferred_genres TEXT[],
|
|
153
|
+
preferred_transitions TEXT[],
|
|
154
|
+
preferred_effects TEXT[],
|
|
155
|
+
preferred_fonts TEXT[],
|
|
156
|
+
default_aspect_ratio VARCHAR(20),
|
|
157
|
+
default_resolution VARCHAR(20),
|
|
158
|
+
default_fps INTEGER,
|
|
159
|
+
brand_colors JSONB,
|
|
160
|
+
brand_fonts JSONB,
|
|
161
|
+
brand_logo_asset_ids TEXT[],
|
|
162
|
+
brand_watermark_asset_id UUID,
|
|
163
|
+
avg_project_duration_ms INTEGER,
|
|
164
|
+
avg_session_length_ms INTEGER,
|
|
165
|
+
total_projects_count INTEGER DEFAULT 0,
|
|
166
|
+
completed_projects_count INTEGER DEFAULT 0,
|
|
167
|
+
total_edit_time_ms BIGINT DEFAULT 0,
|
|
168
|
+
most_used_effects JSONB,
|
|
169
|
+
most_used_transitions JSONB,
|
|
170
|
+
editing_patterns JSONB,
|
|
171
|
+
skill_level VARCHAR(50),
|
|
172
|
+
activity_heatmap JSONB,
|
|
173
|
+
ai_prompts_count INTEGER DEFAULT 0,
|
|
174
|
+
ai_suggestions_accepted INTEGER DEFAULT 0,
|
|
175
|
+
ai_suggestions_rejected INTEGER DEFAULT 0,
|
|
176
|
+
preferred_ai_models TEXT[],
|
|
177
|
+
recent_prompts JSONB,
|
|
178
|
+
user_embedding JSONB,
|
|
179
|
+
embedding_generated_at TIMESTAMP WITH TIME ZONE,
|
|
180
|
+
last_aggregated_at TIMESTAMP WITH TIME ZONE,
|
|
181
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
182
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
183
|
+
CONSTRAINT fk_user_context_user FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
|
|
184
|
+
)
|
|
185
|
+
`);
|
|
186
|
+
await queryRunner.query(`
|
|
187
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_user_context_user_id ON user_context(user_id)
|
|
188
|
+
`);
|
|
189
|
+
await queryRunner.query(`
|
|
190
|
+
CREATE TABLE IF NOT EXISTS ai_embeddings (
|
|
191
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
192
|
+
entity_type embedding_entity_type NOT NULL,
|
|
193
|
+
entity_id VARCHAR(255) NOT NULL,
|
|
194
|
+
user_id UUID,
|
|
195
|
+
workspace_id UUID,
|
|
196
|
+
embedding_type embedding_type DEFAULT 'text',
|
|
197
|
+
embedding JSONB NOT NULL,
|
|
198
|
+
dimension INTEGER NOT NULL,
|
|
199
|
+
source_text TEXT,
|
|
200
|
+
model_id VARCHAR(100) NOT NULL,
|
|
201
|
+
model_version VARCHAR(50),
|
|
202
|
+
metadata JSONB,
|
|
203
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
|
204
|
+
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
205
|
+
)
|
|
206
|
+
`);
|
|
207
|
+
await queryRunner.query(`
|
|
208
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_ai_embeddings_entity ON ai_embeddings(entity_type, entity_id)
|
|
209
|
+
`);
|
|
210
|
+
await queryRunner.query(`
|
|
211
|
+
CREATE INDEX IF NOT EXISTS idx_ai_embeddings_entity_type ON ai_embeddings(entity_type)
|
|
212
|
+
`);
|
|
213
|
+
await queryRunner.query(`
|
|
214
|
+
CREATE INDEX IF NOT EXISTS idx_ai_embeddings_user_id ON ai_embeddings(user_id)
|
|
215
|
+
`);
|
|
216
|
+
await queryRunner.query(`
|
|
217
|
+
CREATE INDEX IF NOT EXISTS idx_ai_embeddings_workspace_id ON ai_embeddings(workspace_id)
|
|
218
|
+
`);
|
|
219
|
+
await queryRunner.query(`
|
|
220
|
+
CREATE INDEX IF NOT EXISTS idx_ai_embeddings_model ON ai_embeddings(model_id)
|
|
221
|
+
`);
|
|
222
|
+
await queryRunner.query(`
|
|
223
|
+
CREATE TABLE IF NOT EXISTS metadata_activity_log (
|
|
224
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
225
|
+
user_id UUID NOT NULL,
|
|
226
|
+
workspace_id UUID,
|
|
227
|
+
session_id VARCHAR(255),
|
|
228
|
+
entity_type VARCHAR(50) NOT NULL,
|
|
229
|
+
entity_id VARCHAR(255) NOT NULL,
|
|
230
|
+
action metadata_activity_action NOT NULL,
|
|
231
|
+
source metadata_activity_source DEFAULT 'user',
|
|
232
|
+
metadata_before JSONB,
|
|
233
|
+
metadata_after JSONB,
|
|
234
|
+
details JSONB,
|
|
235
|
+
project_id VARCHAR(255),
|
|
236
|
+
duration_ms INTEGER,
|
|
237
|
+
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
238
|
+
)
|
|
239
|
+
`);
|
|
240
|
+
await queryRunner.query(`
|
|
241
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_user_id ON metadata_activity_log(user_id)
|
|
242
|
+
`);
|
|
243
|
+
await queryRunner.query(`
|
|
244
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_workspace_id ON metadata_activity_log(workspace_id)
|
|
245
|
+
`);
|
|
246
|
+
await queryRunner.query(`
|
|
247
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_entity ON metadata_activity_log(entity_type, entity_id)
|
|
248
|
+
`);
|
|
249
|
+
await queryRunner.query(`
|
|
250
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_action ON metadata_activity_log(action)
|
|
251
|
+
`);
|
|
252
|
+
await queryRunner.query(`
|
|
253
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_created_at ON metadata_activity_log(created_at DESC)
|
|
254
|
+
`);
|
|
255
|
+
await queryRunner.query(`
|
|
256
|
+
CREATE INDEX IF NOT EXISTS idx_metadata_activity_project_id ON metadata_activity_log(project_id)
|
|
257
|
+
`);
|
|
258
|
+
await queryRunner.query(`
|
|
259
|
+
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
260
|
+
RETURNS TRIGGER AS $$
|
|
261
|
+
BEGIN
|
|
262
|
+
NEW.updated_at = NOW();
|
|
263
|
+
RETURN NEW;
|
|
264
|
+
END;
|
|
265
|
+
$$ language 'plpgsql'
|
|
266
|
+
`);
|
|
267
|
+
await queryRunner.query(`
|
|
268
|
+
DROP TRIGGER IF EXISTS update_asset_metadata_updated_at ON asset_metadata
|
|
269
|
+
`);
|
|
270
|
+
await queryRunner.query(`
|
|
271
|
+
CREATE TRIGGER update_asset_metadata_updated_at
|
|
272
|
+
BEFORE UPDATE ON asset_metadata
|
|
273
|
+
FOR EACH ROW
|
|
274
|
+
EXECUTE FUNCTION update_updated_at_column()
|
|
275
|
+
`);
|
|
276
|
+
await queryRunner.query(`
|
|
277
|
+
DROP TRIGGER IF EXISTS update_project_metadata_updated_at ON project_metadata
|
|
278
|
+
`);
|
|
279
|
+
await queryRunner.query(`
|
|
280
|
+
CREATE TRIGGER update_project_metadata_updated_at
|
|
281
|
+
BEFORE UPDATE ON project_metadata
|
|
282
|
+
FOR EACH ROW
|
|
283
|
+
EXECUTE FUNCTION update_updated_at_column()
|
|
284
|
+
`);
|
|
285
|
+
await queryRunner.query(`
|
|
286
|
+
DROP TRIGGER IF EXISTS update_user_context_updated_at ON user_context
|
|
287
|
+
`);
|
|
288
|
+
await queryRunner.query(`
|
|
289
|
+
CREATE TRIGGER update_user_context_updated_at
|
|
290
|
+
BEFORE UPDATE ON user_context
|
|
291
|
+
FOR EACH ROW
|
|
292
|
+
EXECUTE FUNCTION update_updated_at_column()
|
|
293
|
+
`);
|
|
294
|
+
await queryRunner.query(`
|
|
295
|
+
DROP TRIGGER IF EXISTS update_ai_embeddings_updated_at ON ai_embeddings
|
|
296
|
+
`);
|
|
297
|
+
await queryRunner.query(`
|
|
298
|
+
CREATE TRIGGER update_ai_embeddings_updated_at
|
|
299
|
+
BEFORE UPDATE ON ai_embeddings
|
|
300
|
+
FOR EACH ROW
|
|
301
|
+
EXECUTE FUNCTION update_updated_at_column()
|
|
302
|
+
`);
|
|
303
|
+
await queryRunner.query(`
|
|
304
|
+
COMMENT ON TABLE asset_metadata IS 'Extended metadata for media assets including AI-extracted content and embeddings'
|
|
305
|
+
`);
|
|
306
|
+
await queryRunner.query(`
|
|
307
|
+
COMMENT ON TABLE project_metadata IS 'Project-level metadata for analytics, preferences, and AI context'
|
|
308
|
+
`);
|
|
309
|
+
await queryRunner.query(`
|
|
310
|
+
COMMENT ON TABLE user_context IS 'Aggregated user preferences and behavioral patterns for personalization'
|
|
311
|
+
`);
|
|
312
|
+
await queryRunner.query(`
|
|
313
|
+
COMMENT ON TABLE ai_embeddings IS 'Flexible storage for vector embeddings of various entity types'
|
|
314
|
+
`);
|
|
315
|
+
await queryRunner.query(`
|
|
316
|
+
COMMENT ON TABLE metadata_activity_log IS 'Activity log for tracking metadata changes and user interactions'
|
|
317
|
+
`);
|
|
318
|
+
await queryRunner.query(`
|
|
319
|
+
CREATE OR REPLACE FUNCTION search_similar_assets(
|
|
320
|
+
query_embedding JSONB,
|
|
321
|
+
p_user_id UUID,
|
|
322
|
+
p_limit INTEGER DEFAULT 20
|
|
323
|
+
)
|
|
324
|
+
RETURNS TABLE (
|
|
325
|
+
asset_id UUID,
|
|
326
|
+
similarity FLOAT
|
|
327
|
+
) AS $$
|
|
328
|
+
BEGIN
|
|
329
|
+
RETURN QUERY
|
|
330
|
+
SELECT
|
|
331
|
+
am.asset_id,
|
|
332
|
+
1 - (am.content_embedding::vector(1536) <=> query_embedding::vector(1536)) as similarity
|
|
333
|
+
FROM asset_metadata am
|
|
334
|
+
WHERE am.user_id = p_user_id
|
|
335
|
+
AND am.content_embedding IS NOT NULL
|
|
336
|
+
ORDER BY am.content_embedding::vector(1536) <=> query_embedding::vector(1536)
|
|
337
|
+
LIMIT p_limit;
|
|
338
|
+
END;
|
|
339
|
+
$$ LANGUAGE plpgsql
|
|
340
|
+
`);
|
|
341
|
+
await queryRunner.query(`
|
|
342
|
+
CREATE OR REPLACE FUNCTION search_similar_projects(
|
|
343
|
+
query_embedding JSONB,
|
|
344
|
+
p_user_id UUID,
|
|
345
|
+
p_limit INTEGER DEFAULT 10
|
|
346
|
+
)
|
|
347
|
+
RETURNS TABLE (
|
|
348
|
+
project_id VARCHAR(255),
|
|
349
|
+
similarity FLOAT
|
|
350
|
+
) AS $$
|
|
351
|
+
BEGIN
|
|
352
|
+
RETURN QUERY
|
|
353
|
+
SELECT
|
|
354
|
+
pm.project_id,
|
|
355
|
+
1 - (pm.project_embedding::vector(1536) <=> query_embedding::vector(1536)) as similarity
|
|
356
|
+
FROM project_metadata pm
|
|
357
|
+
WHERE pm.user_id = p_user_id
|
|
358
|
+
AND pm.project_embedding IS NOT NULL
|
|
359
|
+
ORDER BY pm.project_embedding::vector(1536) <=> query_embedding::vector(1536)
|
|
360
|
+
LIMIT p_limit;
|
|
361
|
+
END;
|
|
362
|
+
$$ LANGUAGE plpgsql
|
|
363
|
+
`);
|
|
364
|
+
await queryRunner.query(`
|
|
365
|
+
COMMENT ON FUNCTION search_similar_assets IS 'Find similar assets using vector similarity search (cosine distance)'
|
|
366
|
+
`);
|
|
367
|
+
await queryRunner.query(`
|
|
368
|
+
COMMENT ON FUNCTION search_similar_projects IS 'Find similar projects using vector similarity search (cosine distance)'
|
|
369
|
+
`);
|
|
370
|
+
}
|
|
371
|
+
async down(queryRunner) {
|
|
372
|
+
await queryRunner.query(`
|
|
373
|
+
DROP FUNCTION IF EXISTS search_similar_projects
|
|
374
|
+
`);
|
|
375
|
+
await queryRunner.query(`
|
|
376
|
+
DROP FUNCTION IF EXISTS search_similar_assets
|
|
377
|
+
`);
|
|
378
|
+
await queryRunner.query(`
|
|
379
|
+
DROP TABLE IF EXISTS metadata_activity_log
|
|
380
|
+
`);
|
|
381
|
+
await queryRunner.query(`
|
|
382
|
+
DROP TABLE IF EXISTS ai_embeddings
|
|
383
|
+
`);
|
|
384
|
+
await queryRunner.query(`
|
|
385
|
+
DROP TABLE IF EXISTS user_context
|
|
386
|
+
`);
|
|
387
|
+
await queryRunner.query(`
|
|
388
|
+
DROP TABLE IF EXISTS project_metadata
|
|
389
|
+
`);
|
|
390
|
+
await queryRunner.query(`
|
|
391
|
+
DROP TABLE IF EXISTS asset_metadata
|
|
392
|
+
`);
|
|
393
|
+
await queryRunner.query(`
|
|
394
|
+
DROP TYPE IF EXISTS metadata_activity_source
|
|
395
|
+
`);
|
|
396
|
+
await queryRunner.query(`
|
|
397
|
+
DROP TYPE IF EXISTS metadata_activity_action
|
|
398
|
+
`);
|
|
399
|
+
await queryRunner.query(`
|
|
400
|
+
DROP TYPE IF EXISTS embedding_type
|
|
401
|
+
`);
|
|
402
|
+
await queryRunner.query(`
|
|
403
|
+
DROP TYPE IF EXISTS embedding_entity_type
|
|
404
|
+
`);
|
|
405
|
+
await queryRunner.query(`
|
|
406
|
+
DROP TYPE IF EXISTS asset_metadata_status
|
|
407
|
+
`);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
exports.CreateMetadataServiceTables1713000000021 = CreateMetadataServiceTables1713000000021;
|