@purpleschool/gptbot-tools 0.2.49 → 0.2.50
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/build/music/commands/add-track-to-music-playlist.command.js +23 -0
- package/build/music/commands/boost-music-style.command.js +17 -0
- package/build/music/commands/create-music-playlist.command.js +22 -0
- package/build/music/commands/delete-music-playlist.command.js +21 -0
- package/build/music/commands/edit-music.command.js +11 -0
- package/build/music/commands/generate-music.command.js +5 -0
- package/build/music/commands/index.js +7 -0
- package/build/music/commands/remove-track-from-music-playlist.command.js +23 -0
- package/build/music/commands/update-music-playlist.command.js +23 -0
- package/build/music/enums/index.js +3 -0
- package/build/music/enums/music-action-type.enum.js +7 -0
- package/build/music/enums/music-audio-action-type.enum.js +12 -0
- package/build/music/enums/music-generation-action-type.enum.js +10 -0
- package/build/music/enums/music-lyrics-structure.enum.js +9 -0
- package/build/music/models/index.js +1 -0
- package/build/music/models/music-config-with-vendors.schema.js +2 -0
- package/build/music/models/music-config.schema.js +4 -1
- package/build/music/models/music-job.schema.js +133 -2
- package/build/music/models/music-playlist.schema.js +15 -0
- package/build/music/models/music-track.schema.js +11 -0
- package/build/music/queries/find-music-playlists.query.js +21 -0
- package/build/music/queries/index.js +1 -0
- package/build/music/routes/music.amqp.routes.js +8 -0
- package/music/commands/add-track-to-music-playlist.command.ts +26 -0
- package/music/commands/boost-music-style.command.ts +19 -0
- package/music/commands/create-music-playlist.command.ts +25 -0
- package/music/commands/delete-music-playlist.command.ts +24 -0
- package/music/commands/edit-music.command.ts +13 -0
- package/music/commands/generate-music.command.ts +5 -0
- package/music/commands/index.ts +7 -0
- package/music/commands/remove-track-from-music-playlist.command.ts +26 -0
- package/music/commands/update-music-playlist.command.ts +26 -0
- package/music/enums/index.ts +3 -0
- package/music/enums/music-action-type.enum.ts +7 -0
- package/music/enums/music-audio-action-type.enum.ts +8 -0
- package/music/enums/music-generation-action-type.enum.ts +6 -0
- package/music/enums/music-lyrics-structure.enum.ts +5 -0
- package/music/models/index.ts +1 -0
- package/music/models/music-config-with-vendors.schema.ts +2 -0
- package/music/models/music-config.schema.ts +8 -0
- package/music/models/music-job.schema.ts +173 -2
- package/music/models/music-playlist.schema.ts +15 -0
- package/music/models/music-track.schema.ts +12 -0
- package/music/queries/find-music-playlists.query.ts +24 -0
- package/music/queries/index.ts +1 -0
- package/music/routes/music.amqp.routes.ts +8 -0
- package/package.json +1 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AddTrackToMusicPlaylistCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const music_playlist_schema_1 = require("../models/music-playlist.schema");
|
|
7
|
+
var AddTrackToMusicPlaylistCommand;
|
|
8
|
+
(function (AddTrackToMusicPlaylistCommand) {
|
|
9
|
+
AddTrackToMusicPlaylistCommand.RequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
playlistId: zod_1.z.string().uuid(),
|
|
12
|
+
trackId: zod_1.z.string().uuid(),
|
|
13
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
14
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
15
|
+
})
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
18
|
+
}, {
|
|
19
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
20
|
+
path: ['userId', 'unregisteredUserId'],
|
|
21
|
+
});
|
|
22
|
+
AddTrackToMusicPlaylistCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(music_playlist_schema_1.MusicPlaylistSchema);
|
|
23
|
+
})(AddTrackToMusicPlaylistCommand || (exports.AddTrackToMusicPlaylistCommand = AddTrackToMusicPlaylistCommand = {}));
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BoostMusicStyleCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
var BoostMusicStyleCommand;
|
|
7
|
+
(function (BoostMusicStyleCommand) {
|
|
8
|
+
BoostMusicStyleCommand.RequestSchema = zod_1.z.object({
|
|
9
|
+
userId: zod_1.z.string().uuid().nullable().optional(),
|
|
10
|
+
unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
|
|
11
|
+
userBalance: zod_1.z.number(),
|
|
12
|
+
content: zod_1.z.string().min(1).max(3000),
|
|
13
|
+
});
|
|
14
|
+
BoostMusicStyleCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.object({
|
|
15
|
+
result: zod_1.z.string(),
|
|
16
|
+
}));
|
|
17
|
+
})(BoostMusicStyleCommand || (exports.BoostMusicStyleCommand = BoostMusicStyleCommand = {}));
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CreateMusicPlaylistCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const music_playlist_schema_1 = require("../models/music-playlist.schema");
|
|
7
|
+
var CreateMusicPlaylistCommand;
|
|
8
|
+
(function (CreateMusicPlaylistCommand) {
|
|
9
|
+
CreateMusicPlaylistCommand.RequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
title: zod_1.z.string().min(1).max(80).trim(),
|
|
12
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
13
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
14
|
+
})
|
|
15
|
+
.refine((data) => {
|
|
16
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
17
|
+
}, {
|
|
18
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
19
|
+
path: ['userId', 'unregisteredUserId'],
|
|
20
|
+
});
|
|
21
|
+
CreateMusicPlaylistCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(music_playlist_schema_1.MusicPlaylistSchema);
|
|
22
|
+
})(CreateMusicPlaylistCommand || (exports.CreateMusicPlaylistCommand = CreateMusicPlaylistCommand = {}));
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DeleteMusicPlaylistCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
var DeleteMusicPlaylistCommand;
|
|
7
|
+
(function (DeleteMusicPlaylistCommand) {
|
|
8
|
+
DeleteMusicPlaylistCommand.RequestSchema = zod_1.z
|
|
9
|
+
.object({
|
|
10
|
+
uuid: zod_1.z.string().uuid(),
|
|
11
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
12
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
13
|
+
})
|
|
14
|
+
.refine((data) => {
|
|
15
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
16
|
+
}, {
|
|
17
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
18
|
+
path: ['userId', 'unregisteredUserId'],
|
|
19
|
+
});
|
|
20
|
+
DeleteMusicPlaylistCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.boolean());
|
|
21
|
+
})(DeleteMusicPlaylistCommand || (exports.DeleteMusicPlaylistCommand = DeleteMusicPlaylistCommand = {}));
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EditMusicCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const models_1 = require("../models");
|
|
7
|
+
var EditMusicCommand;
|
|
8
|
+
(function (EditMusicCommand) {
|
|
9
|
+
EditMusicCommand.RequestSchema = models_1.MusicEditRequestSchema;
|
|
10
|
+
EditMusicCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.union([models_1.MusicJobSchema, models_1.MusicEditActionResultSchema]));
|
|
11
|
+
})(EditMusicCommand || (exports.EditMusicCommand = EditMusicCommand = {}));
|
|
@@ -6,12 +6,17 @@ const command_response_schema_1 = require("../../common/models/command-response.
|
|
|
6
6
|
const locale_schema_1 = require("../../common/models/locale.schema");
|
|
7
7
|
const music_job_schema_1 = require("../models/music-job.schema");
|
|
8
8
|
const models_1 = require("../models");
|
|
9
|
+
const enums_1 = require("../enums");
|
|
9
10
|
var GenerateMusicCommand;
|
|
10
11
|
(function (GenerateMusicCommand) {
|
|
11
12
|
GenerateMusicCommand.RequestSchema = zod_1.z.object({
|
|
12
13
|
locale: locale_schema_1.LocaleSchema,
|
|
13
14
|
userId: zod_1.z.string().uuid().nullable().optional(),
|
|
14
15
|
unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
|
|
16
|
+
actionType: zod_1.z
|
|
17
|
+
.nativeEnum(enums_1.MUSIC_GENERATION_ACTION_TYPE)
|
|
18
|
+
.optional()
|
|
19
|
+
.default(enums_1.MUSIC_GENERATION_ACTION_TYPE.GENERATE),
|
|
15
20
|
modelId: zod_1.z.string(),
|
|
16
21
|
params: models_1.MusicJobParamsSchema,
|
|
17
22
|
tokenReservationId: zod_1.z.string().uuid(),
|
|
@@ -14,15 +14,22 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./add-track-to-music-playlist.command"), exports);
|
|
18
|
+
__exportStar(require("./create-music-playlist.command"), exports);
|
|
19
|
+
__exportStar(require("./delete-music-playlist.command"), exports);
|
|
20
|
+
__exportStar(require("./edit-music.command"), exports);
|
|
17
21
|
__exportStar(require("./delete-music-job-by-uuid.command"), exports);
|
|
18
22
|
__exportStar(require("./delete-all-music-jobs.command"), exports);
|
|
23
|
+
__exportStar(require("./remove-track-from-music-playlist.command"), exports);
|
|
19
24
|
__exportStar(require("./retry-music-job.command"), exports);
|
|
20
25
|
__exportStar(require("./set-reaction-to-music-job.command"), exports);
|
|
21
26
|
__exportStar(require("./generate-music.command"), exports);
|
|
22
27
|
__exportStar(require("./get-music-price.command"), exports);
|
|
23
28
|
__exportStar(require("./update-music-job-title.command"), exports);
|
|
24
29
|
__exportStar(require("./update-music-job-favorite.command"), exports);
|
|
30
|
+
__exportStar(require("./update-music-playlist.command"), exports);
|
|
25
31
|
__exportStar(require("./convert-to-wav.command"), exports);
|
|
26
32
|
__exportStar(require("./generate-lyrics.command"), exports);
|
|
33
|
+
__exportStar(require("./boost-music-style.command"), exports);
|
|
27
34
|
__exportStar(require("./music-model"), exports);
|
|
28
35
|
__exportStar(require("./update-published-status-music-jobs.command"), exports);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RemoveTrackFromMusicPlaylistCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const music_playlist_schema_1 = require("../models/music-playlist.schema");
|
|
7
|
+
var RemoveTrackFromMusicPlaylistCommand;
|
|
8
|
+
(function (RemoveTrackFromMusicPlaylistCommand) {
|
|
9
|
+
RemoveTrackFromMusicPlaylistCommand.RequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
playlistId: zod_1.z.string().uuid(),
|
|
12
|
+
trackId: zod_1.z.string().uuid(),
|
|
13
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
14
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
15
|
+
})
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
18
|
+
}, {
|
|
19
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
20
|
+
path: ['userId', 'unregisteredUserId'],
|
|
21
|
+
});
|
|
22
|
+
RemoveTrackFromMusicPlaylistCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(music_playlist_schema_1.MusicPlaylistSchema);
|
|
23
|
+
})(RemoveTrackFromMusicPlaylistCommand || (exports.RemoveTrackFromMusicPlaylistCommand = RemoveTrackFromMusicPlaylistCommand = {}));
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UpdateMusicPlaylistCommand = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const music_playlist_schema_1 = require("../models/music-playlist.schema");
|
|
7
|
+
var UpdateMusicPlaylistCommand;
|
|
8
|
+
(function (UpdateMusicPlaylistCommand) {
|
|
9
|
+
UpdateMusicPlaylistCommand.RequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
uuid: zod_1.z.string().uuid(),
|
|
12
|
+
title: zod_1.z.string().min(1).max(80).trim(),
|
|
13
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
14
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
15
|
+
})
|
|
16
|
+
.refine((data) => {
|
|
17
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
18
|
+
}, {
|
|
19
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
20
|
+
path: ['userId', 'unregisteredUserId'],
|
|
21
|
+
});
|
|
22
|
+
UpdateMusicPlaylistCommand.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(music_playlist_schema_1.MusicPlaylistSchema);
|
|
23
|
+
})(UpdateMusicPlaylistCommand || (exports.UpdateMusicPlaylistCommand = UpdateMusicPlaylistCommand = {}));
|
|
@@ -20,3 +20,6 @@ __exportStar(require("./music-vocal-gender.enum"), exports);
|
|
|
20
20
|
__exportStar(require("./music-pricing-rule-type.enum"), exports);
|
|
21
21
|
__exportStar(require("./suno-mode-type.enum"), exports);
|
|
22
22
|
__exportStar(require("./music-action-type.enum"), exports);
|
|
23
|
+
__exportStar(require("./music-audio-action-type.enum"), exports);
|
|
24
|
+
__exportStar(require("./music-generation-action-type.enum"), exports);
|
|
25
|
+
__exportStar(require("./music-lyrics-structure.enum"), exports);
|
|
@@ -4,4 +4,11 @@ exports.MUSIC_ACTION_TYPE = void 0;
|
|
|
4
4
|
var MUSIC_ACTION_TYPE;
|
|
5
5
|
(function (MUSIC_ACTION_TYPE) {
|
|
6
6
|
MUSIC_ACTION_TYPE["LYRICS"] = "LYRICS";
|
|
7
|
+
MUSIC_ACTION_TYPE["BOOST_STYLE"] = "BOOST_STYLE";
|
|
8
|
+
MUSIC_ACTION_TYPE["REMOVE_VOCALS"] = "REMOVE_VOCALS";
|
|
9
|
+
MUSIC_ACTION_TYPE["EXTRACT_VOCALS"] = "EXTRACT_VOCALS";
|
|
10
|
+
MUSIC_ACTION_TYPE["COVER"] = "COVER";
|
|
11
|
+
MUSIC_ACTION_TYPE["EXTEND"] = "EXTEND";
|
|
12
|
+
MUSIC_ACTION_TYPE["ADD_INSTRUMENTAL"] = "ADD_INSTRUMENTAL";
|
|
13
|
+
MUSIC_ACTION_TYPE["ADD_VOCALS"] = "ADD_VOCALS";
|
|
7
14
|
})(MUSIC_ACTION_TYPE || (exports.MUSIC_ACTION_TYPE = MUSIC_ACTION_TYPE = {}));
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MUSIC_AUDIO_ACTION_TYPE = void 0;
|
|
4
|
+
var MUSIC_AUDIO_ACTION_TYPE;
|
|
5
|
+
(function (MUSIC_AUDIO_ACTION_TYPE) {
|
|
6
|
+
MUSIC_AUDIO_ACTION_TYPE["REMOVE_VOCALS"] = "removeVocals";
|
|
7
|
+
MUSIC_AUDIO_ACTION_TYPE["EXTRACT_VOCALS"] = "extractVocals";
|
|
8
|
+
MUSIC_AUDIO_ACTION_TYPE["COVER"] = "cover";
|
|
9
|
+
MUSIC_AUDIO_ACTION_TYPE["EXTEND"] = "extend";
|
|
10
|
+
MUSIC_AUDIO_ACTION_TYPE["ADD_INSTRUMENTAL"] = "addInstrumental";
|
|
11
|
+
MUSIC_AUDIO_ACTION_TYPE["ADD_VOCALS"] = "addVocals";
|
|
12
|
+
})(MUSIC_AUDIO_ACTION_TYPE || (exports.MUSIC_AUDIO_ACTION_TYPE = MUSIC_AUDIO_ACTION_TYPE = {}));
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MUSIC_GENERATION_ACTION_TYPE = void 0;
|
|
4
|
+
var MUSIC_GENERATION_ACTION_TYPE;
|
|
5
|
+
(function (MUSIC_GENERATION_ACTION_TYPE) {
|
|
6
|
+
MUSIC_GENERATION_ACTION_TYPE["GENERATE"] = "generate";
|
|
7
|
+
MUSIC_GENERATION_ACTION_TYPE["GIFT"] = "gift";
|
|
8
|
+
MUSIC_GENERATION_ACTION_TYPE["BACKGROUND"] = "background";
|
|
9
|
+
MUSIC_GENERATION_ACTION_TYPE["GENERATE_LYRICS"] = "generateLyrics";
|
|
10
|
+
})(MUSIC_GENERATION_ACTION_TYPE || (exports.MUSIC_GENERATION_ACTION_TYPE = MUSIC_GENERATION_ACTION_TYPE = {}));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MUSIC_LYRICS_STRUCTURE = void 0;
|
|
4
|
+
var MUSIC_LYRICS_STRUCTURE;
|
|
5
|
+
(function (MUSIC_LYRICS_STRUCTURE) {
|
|
6
|
+
MUSIC_LYRICS_STRUCTURE["VERSE_CHORUS"] = "verse_chorus";
|
|
7
|
+
MUSIC_LYRICS_STRUCTURE["WITH_BRIDGE"] = "with_bridge";
|
|
8
|
+
MUSIC_LYRICS_STRUCTURE["FREE"] = "free";
|
|
9
|
+
})(MUSIC_LYRICS_STRUCTURE || (exports.MUSIC_LYRICS_STRUCTURE = MUSIC_LYRICS_STRUCTURE = {}));
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./music-config-with-vendors.schema"), exports);
|
|
|
19
19
|
__exportStar(require("./music-job.schema"), exports);
|
|
20
20
|
__exportStar(require("./music-model.schema"), exports);
|
|
21
21
|
__exportStar(require("./music-model-with-vendor.schema"), exports);
|
|
22
|
+
__exportStar(require("./music-playlist.schema"), exports);
|
|
22
23
|
__exportStar(require("./music-track.schema"), exports);
|
|
@@ -4,7 +4,9 @@ exports.MusicConfigWithVendorsSchema = void 0;
|
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const ai_vendor_1 = require("../../ai-vendor");
|
|
6
6
|
const music_model_with_vendor_schema_1 = require("./music-model-with-vendor.schema");
|
|
7
|
+
const music_config_schema_1 = require("./music-config.schema");
|
|
7
8
|
exports.MusicConfigWithVendorsSchema = zod_1.z.object({
|
|
8
9
|
vendors: zod_1.z.array(ai_vendor_1.AiVendorSchema),
|
|
9
10
|
models: zod_1.z.array(music_model_with_vendor_schema_1.MusicModelWithVendorSchema),
|
|
11
|
+
audioActionPrices: music_config_schema_1.MusicAudioActionPricesSchema,
|
|
10
12
|
});
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MusicConfigSchema = void 0;
|
|
3
|
+
exports.MusicConfigSchema = exports.MusicAudioActionPricesSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const music_model_schema_1 = require("./music-model.schema");
|
|
6
|
+
const enums_1 = require("../enums");
|
|
7
|
+
exports.MusicAudioActionPricesSchema = zod_1.z.record(zod_1.z.nativeEnum(enums_1.MUSIC_AUDIO_ACTION_TYPE), zod_1.z.number());
|
|
6
8
|
exports.MusicConfigSchema = zod_1.z.object({
|
|
7
9
|
models: zod_1.z.array(music_model_schema_1.MusicModelSchema),
|
|
10
|
+
audioActionPrices: exports.MusicAudioActionPricesSchema,
|
|
8
11
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MusicJobSchema = exports.MusicJobParamsSchema = void 0;
|
|
3
|
+
exports.MusicJobSchema = exports.MusicExecuteRequestSchema = exports.MusicAnyJobParamsSchema = exports.MusicEditActionResultSchema = exports.MusicEditRequestSchema = exports.MusicAddVocalsParamsSchema = exports.MusicAddInstrumentalParamsSchema = exports.MusicUploadExtendParamsSchema = exports.MusicUploadCoverParamsSchema = exports.MusicSeparateVocalsParamsSchema = exports.MusicBackgroundParamsSchema = exports.MusicLyricsParamsSchema = exports.MusicJobParamsSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
5
|
const tools_1 = require("../../tools");
|
|
6
6
|
const common_1 = require("../../common");
|
|
@@ -30,6 +30,137 @@ exports.MusicJobParamsSchema = zod_1.z.discriminatedUnion('mode', [
|
|
|
30
30
|
style: zod_1.z.string().min(1).max(1000),
|
|
31
31
|
}),
|
|
32
32
|
]);
|
|
33
|
+
exports.MusicLyricsParamsSchema = zod_1.z.object({
|
|
34
|
+
prompt: zod_1.z.string().min(1).max(1000),
|
|
35
|
+
style: zod_1.z.string().min(1).max(200).optional(),
|
|
36
|
+
structure: zod_1.z.nativeEnum(enums_1.MUSIC_LYRICS_STRUCTURE),
|
|
37
|
+
});
|
|
38
|
+
exports.MusicBackgroundParamsSchema = zod_1.z.object({
|
|
39
|
+
prompt: zod_1.z.string().min(1).max(450),
|
|
40
|
+
style: zod_1.z.string(),
|
|
41
|
+
});
|
|
42
|
+
exports.MusicSeparateVocalsParamsSchema = zod_1.z.object({
|
|
43
|
+
externalId: zod_1.z.string().uuid(),
|
|
44
|
+
audioId: zod_1.z.string().min(1),
|
|
45
|
+
});
|
|
46
|
+
exports.MusicUploadCoverParamsSchema = zod_1.z.object({
|
|
47
|
+
audioId: zod_1.z.string().uuid(),
|
|
48
|
+
uploadUrl: zod_1.z.string().url(),
|
|
49
|
+
style: zod_1.z.string().min(1).max(1000),
|
|
50
|
+
prompt: zod_1.z.string().min(1).max(5000).optional(),
|
|
51
|
+
title: zod_1.z.string().min(1).max(80).optional(),
|
|
52
|
+
negativeTags: zod_1.z.string().max(1000).optional(),
|
|
53
|
+
vocalGender: zod_1.z.nativeEnum(enums_1.MUSIC_VOCAL_GENDER).optional(),
|
|
54
|
+
instrumental: zod_1.z.boolean().optional(),
|
|
55
|
+
});
|
|
56
|
+
exports.MusicUploadExtendParamsSchema = zod_1.z.object({
|
|
57
|
+
audioId: zod_1.z.string().uuid(),
|
|
58
|
+
uploadUrl: zod_1.z.string().url(),
|
|
59
|
+
continueAt: zod_1.z.number().positive(),
|
|
60
|
+
prompt: zod_1.z.string().min(1).max(5000),
|
|
61
|
+
style: zod_1.z.string().min(1).max(1000).optional(),
|
|
62
|
+
title: zod_1.z.string().min(1).max(80).optional(),
|
|
63
|
+
negativeTags: zod_1.z.string().max(1000).optional(),
|
|
64
|
+
vocalGender: zod_1.z.nativeEnum(enums_1.MUSIC_VOCAL_GENDER).optional(),
|
|
65
|
+
instrumental: zod_1.z.boolean().optional(),
|
|
66
|
+
});
|
|
67
|
+
exports.MusicAddInstrumentalParamsSchema = zod_1.z.object({
|
|
68
|
+
audioId: zod_1.z.string().uuid(),
|
|
69
|
+
uploadUrl: zod_1.z.string().url(),
|
|
70
|
+
style: zod_1.z.string().min(1).max(1000),
|
|
71
|
+
title: zod_1.z.string().min(1).max(80).optional(),
|
|
72
|
+
negativeTags: zod_1.z.string().max(1000).optional(),
|
|
73
|
+
vocalGender: zod_1.z.nativeEnum(enums_1.MUSIC_VOCAL_GENDER).optional(),
|
|
74
|
+
});
|
|
75
|
+
exports.MusicAddVocalsParamsSchema = zod_1.z.object({
|
|
76
|
+
audioId: zod_1.z.string().uuid(),
|
|
77
|
+
uploadUrl: zod_1.z.string().url(),
|
|
78
|
+
prompt: zod_1.z.string().min(1).max(5000),
|
|
79
|
+
style: zod_1.z.string().min(1).max(1000),
|
|
80
|
+
title: zod_1.z.string().min(1).max(80).optional(),
|
|
81
|
+
negativeTags: zod_1.z.string().max(1000).optional(),
|
|
82
|
+
vocalGender: zod_1.z.nativeEnum(enums_1.MUSIC_VOCAL_GENDER).optional(),
|
|
83
|
+
});
|
|
84
|
+
exports.MusicEditRequestSchema = zod_1.z
|
|
85
|
+
.object({
|
|
86
|
+
actionType: zod_1.z.nativeEnum(enums_1.MUSIC_AUDIO_ACTION_TYPE),
|
|
87
|
+
modelId: zod_1.z.string().uuid().optional(),
|
|
88
|
+
params: zod_1.z.unknown(),
|
|
89
|
+
userId: zod_1.z.string().optional(),
|
|
90
|
+
unregisteredUserId: zod_1.z.string().optional(),
|
|
91
|
+
userBalance: zod_1.z.number(),
|
|
92
|
+
})
|
|
93
|
+
.superRefine((data, ctx) => {
|
|
94
|
+
const requiresModel = ![
|
|
95
|
+
enums_1.MUSIC_AUDIO_ACTION_TYPE.REMOVE_VOCALS,
|
|
96
|
+
enums_1.MUSIC_AUDIO_ACTION_TYPE.EXTRACT_VOCALS,
|
|
97
|
+
].includes(data.actionType);
|
|
98
|
+
if (requiresModel && !data.modelId) {
|
|
99
|
+
ctx.addIssue({
|
|
100
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
101
|
+
message: 'modelId is required',
|
|
102
|
+
path: ['modelId'],
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const paramsValidation = data.actionType === enums_1.MUSIC_AUDIO_ACTION_TYPE.REMOVE_VOCALS ||
|
|
106
|
+
data.actionType === enums_1.MUSIC_AUDIO_ACTION_TYPE.EXTRACT_VOCALS
|
|
107
|
+
? exports.MusicSeparateVocalsParamsSchema.safeParse(data.params)
|
|
108
|
+
: data.actionType === enums_1.MUSIC_AUDIO_ACTION_TYPE.COVER
|
|
109
|
+
? exports.MusicUploadCoverParamsSchema.safeParse(data.params)
|
|
110
|
+
: data.actionType === enums_1.MUSIC_AUDIO_ACTION_TYPE.EXTEND
|
|
111
|
+
? exports.MusicUploadExtendParamsSchema.safeParse(data.params)
|
|
112
|
+
: data.actionType === enums_1.MUSIC_AUDIO_ACTION_TYPE.ADD_INSTRUMENTAL
|
|
113
|
+
? exports.MusicAddInstrumentalParamsSchema.safeParse(data.params)
|
|
114
|
+
: exports.MusicAddVocalsParamsSchema.safeParse(data.params);
|
|
115
|
+
if (!paramsValidation.success) {
|
|
116
|
+
for (const issue of paramsValidation.error.issues) {
|
|
117
|
+
ctx.addIssue(Object.assign(Object.assign({}, issue), { path: ['params', ...issue.path] }));
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
exports.MusicEditActionResultSchema = zod_1.z.object({
|
|
122
|
+
actionType: zod_1.z.nativeEnum(enums_1.MUSIC_AUDIO_ACTION_TYPE),
|
|
123
|
+
url: zod_1.z.string(),
|
|
124
|
+
vocalUrl: zod_1.z.string().optional(),
|
|
125
|
+
instrumentalUrl: zod_1.z.string().optional(),
|
|
126
|
+
originUrl: zod_1.z.string().optional(),
|
|
127
|
+
price: zod_1.z.number(),
|
|
128
|
+
});
|
|
129
|
+
exports.MusicAnyJobParamsSchema = zod_1.z.union([
|
|
130
|
+
exports.MusicJobParamsSchema,
|
|
131
|
+
exports.MusicUploadCoverParamsSchema,
|
|
132
|
+
exports.MusicUploadExtendParamsSchema,
|
|
133
|
+
exports.MusicAddInstrumentalParamsSchema,
|
|
134
|
+
exports.MusicAddVocalsParamsSchema,
|
|
135
|
+
]);
|
|
136
|
+
exports.MusicExecuteRequestSchema = zod_1.z
|
|
137
|
+
.object({
|
|
138
|
+
actionType: zod_1.z
|
|
139
|
+
.nativeEnum(enums_1.MUSIC_GENERATION_ACTION_TYPE)
|
|
140
|
+
.optional()
|
|
141
|
+
.default(enums_1.MUSIC_GENERATION_ACTION_TYPE.GENERATE),
|
|
142
|
+
modelId: zod_1.z.string().uuid().optional(),
|
|
143
|
+
params: zod_1.z.unknown(),
|
|
144
|
+
})
|
|
145
|
+
.superRefine((data, ctx) => {
|
|
146
|
+
if (data.actionType !== enums_1.MUSIC_GENERATION_ACTION_TYPE.GENERATE_LYRICS && !data.modelId) {
|
|
147
|
+
ctx.addIssue({
|
|
148
|
+
code: zod_1.z.ZodIssueCode.custom,
|
|
149
|
+
message: 'modelId is required',
|
|
150
|
+
path: ['modelId'],
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
const paramsValidation = data.actionType === enums_1.MUSIC_GENERATION_ACTION_TYPE.GENERATE_LYRICS
|
|
154
|
+
? exports.MusicLyricsParamsSchema.safeParse(data.params)
|
|
155
|
+
: data.actionType === enums_1.MUSIC_GENERATION_ACTION_TYPE.BACKGROUND
|
|
156
|
+
? exports.MusicBackgroundParamsSchema.safeParse(data.params)
|
|
157
|
+
: exports.MusicJobParamsSchema.safeParse(data.params);
|
|
158
|
+
if (!paramsValidation.success) {
|
|
159
|
+
for (const issue of paramsValidation.error.issues) {
|
|
160
|
+
ctx.addIssue(Object.assign(Object.assign({}, issue), { path: ['params', ...issue.path] }));
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
});
|
|
33
164
|
exports.MusicJobSchema = zod_1.z.object({
|
|
34
165
|
uuid: zod_1.z.string(),
|
|
35
166
|
prompt: zod_1.z.string(),
|
|
@@ -41,7 +172,7 @@ exports.MusicJobSchema = zod_1.z.object({
|
|
|
41
172
|
error: zod_1.z.string().nullable(),
|
|
42
173
|
modelId: zod_1.z.string(),
|
|
43
174
|
price: zod_1.z.number(),
|
|
44
|
-
params: exports.
|
|
175
|
+
params: exports.MusicAnyJobParamsSchema,
|
|
45
176
|
tracks: zod_1.z.array(music_track_schema_1.MusicTrackSchema),
|
|
46
177
|
attempts: zod_1.z.array(zod_1.z.any()),
|
|
47
178
|
userId: zod_1.z.string().nullable().optional(),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MusicPlaylistSchema = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const music_track_schema_1 = require("./music-track.schema");
|
|
6
|
+
exports.MusicPlaylistSchema = zod_1.z.object({
|
|
7
|
+
uuid: zod_1.z.string().uuid(),
|
|
8
|
+
title: zod_1.z.string(),
|
|
9
|
+
tracks: zod_1.z.array(music_track_schema_1.MusicTrackSchema).optional(),
|
|
10
|
+
trackCount: zod_1.z.number(),
|
|
11
|
+
userId: zod_1.z.string().uuid().nullable().optional(),
|
|
12
|
+
unregisteredUserId: zod_1.z.string().uuid().nullable().optional(),
|
|
13
|
+
createdAt: zod_1.z.date(),
|
|
14
|
+
updatedAt: zod_1.z.date(),
|
|
15
|
+
});
|
|
@@ -2,13 +2,24 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.MusicTrackSchema = void 0;
|
|
4
4
|
const zod_1 = require("zod");
|
|
5
|
+
const common_1 = require("../../common");
|
|
6
|
+
const MusicTrackAudioFileSchema = common_1.AttachedFileSchema.pick({
|
|
7
|
+
uuid: true,
|
|
8
|
+
url: true,
|
|
9
|
+
mimeType: true,
|
|
10
|
+
}).extend({
|
|
11
|
+
duration: zod_1.z.number().nullable(),
|
|
12
|
+
originalName: zod_1.z.string().nullable().optional(),
|
|
13
|
+
});
|
|
5
14
|
exports.MusicTrackSchema = zod_1.z.object({
|
|
6
15
|
uuid: zod_1.z.string(),
|
|
7
16
|
title: zod_1.z.string(),
|
|
8
17
|
audioId: zod_1.z.string(),
|
|
9
18
|
audioUrl: zod_1.z.string(),
|
|
19
|
+
audioFile: MusicTrackAudioFileSchema.nullable().optional(),
|
|
10
20
|
coverUrl: zod_1.z.string(),
|
|
11
21
|
prompt: zod_1.z.string().nullable(),
|
|
22
|
+
fullLyrics: zod_1.z.string().nullable().optional(),
|
|
12
23
|
tags: zod_1.z.string(),
|
|
13
24
|
duration: zod_1.z.number(),
|
|
14
25
|
waveformPeaks: zod_1.z.array(zod_1.z.number()),
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FindMusicPlaylistsQuery = void 0;
|
|
4
|
+
const zod_1 = require("zod");
|
|
5
|
+
const command_response_schema_1 = require("../../common/models/command-response.schema");
|
|
6
|
+
const music_playlist_schema_1 = require("../models/music-playlist.schema");
|
|
7
|
+
var FindMusicPlaylistsQuery;
|
|
8
|
+
(function (FindMusicPlaylistsQuery) {
|
|
9
|
+
FindMusicPlaylistsQuery.RequestSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
userId: zod_1.z.string().uuid().optional(),
|
|
12
|
+
unregisteredUserId: zod_1.z.string().uuid().optional(),
|
|
13
|
+
})
|
|
14
|
+
.refine((data) => {
|
|
15
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
16
|
+
}, {
|
|
17
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
18
|
+
path: ['userId', 'unregisteredUserId'],
|
|
19
|
+
});
|
|
20
|
+
FindMusicPlaylistsQuery.ResponseSchema = (0, command_response_schema_1.ICommandResponseSchema)(zod_1.z.array(music_playlist_schema_1.MusicPlaylistSchema));
|
|
21
|
+
})(FindMusicPlaylistsQuery || (exports.FindMusicPlaylistsQuery = FindMusicPlaylistsQuery = {}));
|
|
@@ -16,5 +16,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./find-music-job-by-id.query"), exports);
|
|
18
18
|
__exportStar(require("./find-music-jobs.query"), exports);
|
|
19
|
+
__exportStar(require("./find-music-playlists.query"), exports);
|
|
19
20
|
__exportStar(require("./get-music-config.query"), exports);
|
|
20
21
|
__exportStar(require("./get-music-config-with-vendors.query"), exports);
|
|
@@ -3,17 +3,25 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.MUSIC_AMQP_ROUTES = void 0;
|
|
4
4
|
exports.MUSIC_AMQP_ROUTES = {
|
|
5
5
|
EXECUTE: 'tools.music.execute.rpc',
|
|
6
|
+
EDIT: 'tools.music.edit.rpc',
|
|
6
7
|
GET_PRICE: 'tools.music.get-price.rpc',
|
|
7
8
|
GENERATE_LYRICS: 'tools.music.generate-lyrics.rpc',
|
|
9
|
+
BOOST_STYLE: 'tools.music.boost-style.rpc',
|
|
8
10
|
CONVERT_TO_WAV: 'tools.music.convert-to-wav.rpc',
|
|
9
11
|
CONFIG: 'tools.music.config.rpc',
|
|
10
12
|
CONFIG_WITH_VENDORS: 'tools.music.config-with-vendors.rpc',
|
|
11
13
|
GET_JOB: 'tools.music.jobs.get.rpc',
|
|
12
14
|
LIST_JOBS: 'tools.music.jobs.list.rpc',
|
|
15
|
+
LIST_PLAYLISTS: 'tools.music.playlists.list.rpc',
|
|
13
16
|
SET_REACTION: 'tools.music.jobs.set-reaction.rpc',
|
|
14
17
|
UPDATE_TITLE: 'tools.music.jobs.update-title.rpc',
|
|
15
18
|
UPDATE_FAVORITE: 'tools.music.jobs.update-favorite.rpc',
|
|
16
19
|
UPDATE_JOB: 'tools.music.jobs.update.rpc',
|
|
20
|
+
CREATE_PLAYLIST: 'tools.music.playlists.create.rpc',
|
|
21
|
+
UPDATE_PLAYLIST: 'tools.music.playlists.update.rpc',
|
|
22
|
+
DELETE_PLAYLIST: 'tools.music.playlists.delete.rpc',
|
|
23
|
+
ADD_TRACK_TO_PLAYLIST: 'tools.music.playlists.add-track.rpc',
|
|
24
|
+
REMOVE_TRACK_FROM_PLAYLIST: 'tools.music.playlists.remove-track.rpc',
|
|
17
25
|
SOFT_DELETE: 'tools.music.jobs.soft-delete.rpc',
|
|
18
26
|
SOFT_DELETE_ALL: 'tools.music.jobs.soft-delete-all.rpc',
|
|
19
27
|
RETRY: 'tools.music.jobs.retry.rpc',
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicPlaylistSchema } from '../models/music-playlist.schema';
|
|
4
|
+
|
|
5
|
+
export namespace AddTrackToMusicPlaylistCommand {
|
|
6
|
+
export const RequestSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
playlistId: z.string().uuid(),
|
|
9
|
+
trackId: z.string().uuid(),
|
|
10
|
+
userId: z.string().uuid().optional(),
|
|
11
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
12
|
+
})
|
|
13
|
+
.refine(
|
|
14
|
+
(data) => {
|
|
15
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
19
|
+
path: ['userId', 'unregisteredUserId'],
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
23
|
+
|
|
24
|
+
export const ResponseSchema = ICommandResponseSchema(MusicPlaylistSchema);
|
|
25
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace BoostMusicStyleCommand {
|
|
5
|
+
export const RequestSchema = z.object({
|
|
6
|
+
userId: z.string().uuid().nullable().optional(),
|
|
7
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
8
|
+
userBalance: z.number(),
|
|
9
|
+
content: z.string().min(1).max(3000),
|
|
10
|
+
});
|
|
11
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
12
|
+
|
|
13
|
+
export const ResponseSchema = ICommandResponseSchema(
|
|
14
|
+
z.object({
|
|
15
|
+
result: z.string(),
|
|
16
|
+
}),
|
|
17
|
+
);
|
|
18
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicPlaylistSchema } from '../models/music-playlist.schema';
|
|
4
|
+
|
|
5
|
+
export namespace CreateMusicPlaylistCommand {
|
|
6
|
+
export const RequestSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
title: z.string().min(1).max(80).trim(),
|
|
9
|
+
userId: z.string().uuid().optional(),
|
|
10
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
11
|
+
})
|
|
12
|
+
.refine(
|
|
13
|
+
(data) => {
|
|
14
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
18
|
+
path: ['userId', 'unregisteredUserId'],
|
|
19
|
+
},
|
|
20
|
+
);
|
|
21
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
22
|
+
|
|
23
|
+
export const ResponseSchema = ICommandResponseSchema(MusicPlaylistSchema);
|
|
24
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
|
|
4
|
+
export namespace DeleteMusicPlaylistCommand {
|
|
5
|
+
export const RequestSchema = z
|
|
6
|
+
.object({
|
|
7
|
+
uuid: z.string().uuid(),
|
|
8
|
+
userId: z.string().uuid().optional(),
|
|
9
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
10
|
+
})
|
|
11
|
+
.refine(
|
|
12
|
+
(data) => {
|
|
13
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
17
|
+
path: ['userId', 'unregisteredUserId'],
|
|
18
|
+
},
|
|
19
|
+
);
|
|
20
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
21
|
+
|
|
22
|
+
export const ResponseSchema = ICommandResponseSchema(z.boolean());
|
|
23
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
24
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicEditActionResultSchema, MusicEditRequestSchema, MusicJobSchema } from '../models';
|
|
4
|
+
|
|
5
|
+
export namespace EditMusicCommand {
|
|
6
|
+
export const RequestSchema = MusicEditRequestSchema;
|
|
7
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
8
|
+
|
|
9
|
+
export const ResponseSchema = ICommandResponseSchema(
|
|
10
|
+
z.union([MusicJobSchema, MusicEditActionResultSchema]),
|
|
11
|
+
);
|
|
12
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
13
|
+
}
|
|
@@ -3,12 +3,17 @@ import { ICommandResponseSchema } from '../../common/models/command-response.sch
|
|
|
3
3
|
import { LocaleSchema } from '../../common/models/locale.schema';
|
|
4
4
|
import { MusicJobSchema } from '../models/music-job.schema';
|
|
5
5
|
import { MusicJobParamsSchema } from '../models';
|
|
6
|
+
import { MUSIC_GENERATION_ACTION_TYPE } from '../enums';
|
|
6
7
|
|
|
7
8
|
export namespace GenerateMusicCommand {
|
|
8
9
|
export const RequestSchema = z.object({
|
|
9
10
|
locale: LocaleSchema,
|
|
10
11
|
userId: z.string().uuid().nullable().optional(),
|
|
11
12
|
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
13
|
+
actionType: z
|
|
14
|
+
.nativeEnum(MUSIC_GENERATION_ACTION_TYPE)
|
|
15
|
+
.optional()
|
|
16
|
+
.default(MUSIC_GENERATION_ACTION_TYPE.GENERATE),
|
|
12
17
|
modelId: z.string(),
|
|
13
18
|
params: MusicJobParamsSchema,
|
|
14
19
|
tokenReservationId: z.string().uuid(),
|
package/music/commands/index.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
+
export * from './add-track-to-music-playlist.command';
|
|
2
|
+
export * from './create-music-playlist.command';
|
|
3
|
+
export * from './delete-music-playlist.command';
|
|
4
|
+
export * from './edit-music.command';
|
|
1
5
|
export * from './delete-music-job-by-uuid.command';
|
|
2
6
|
export * from './delete-all-music-jobs.command';
|
|
7
|
+
export * from './remove-track-from-music-playlist.command';
|
|
3
8
|
export * from './retry-music-job.command';
|
|
4
9
|
export * from './set-reaction-to-music-job.command';
|
|
5
10
|
export * from './generate-music.command';
|
|
6
11
|
export * from './get-music-price.command';
|
|
7
12
|
export * from './update-music-job-title.command';
|
|
8
13
|
export * from './update-music-job-favorite.command';
|
|
14
|
+
export * from './update-music-playlist.command';
|
|
9
15
|
export * from './convert-to-wav.command';
|
|
10
16
|
export * from './generate-lyrics.command';
|
|
17
|
+
export * from './boost-music-style.command';
|
|
11
18
|
export * from './music-model';
|
|
12
19
|
export * from './update-published-status-music-jobs.command';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicPlaylistSchema } from '../models/music-playlist.schema';
|
|
4
|
+
|
|
5
|
+
export namespace RemoveTrackFromMusicPlaylistCommand {
|
|
6
|
+
export const RequestSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
playlistId: z.string().uuid(),
|
|
9
|
+
trackId: z.string().uuid(),
|
|
10
|
+
userId: z.string().uuid().optional(),
|
|
11
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
12
|
+
})
|
|
13
|
+
.refine(
|
|
14
|
+
(data) => {
|
|
15
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
19
|
+
path: ['userId', 'unregisteredUserId'],
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
23
|
+
|
|
24
|
+
export const ResponseSchema = ICommandResponseSchema(MusicPlaylistSchema);
|
|
25
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicPlaylistSchema } from '../models/music-playlist.schema';
|
|
4
|
+
|
|
5
|
+
export namespace UpdateMusicPlaylistCommand {
|
|
6
|
+
export const RequestSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
uuid: z.string().uuid(),
|
|
9
|
+
title: z.string().min(1).max(80).trim(),
|
|
10
|
+
userId: z.string().uuid().optional(),
|
|
11
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
12
|
+
})
|
|
13
|
+
.refine(
|
|
14
|
+
(data) => {
|
|
15
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
19
|
+
path: ['userId', 'unregisteredUserId'],
|
|
20
|
+
},
|
|
21
|
+
);
|
|
22
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
23
|
+
|
|
24
|
+
export const ResponseSchema = ICommandResponseSchema(MusicPlaylistSchema);
|
|
25
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
26
|
+
}
|
package/music/enums/index.ts
CHANGED
|
@@ -4,3 +4,6 @@ export * from './music-vocal-gender.enum';
|
|
|
4
4
|
export * from './music-pricing-rule-type.enum';
|
|
5
5
|
export * from './suno-mode-type.enum';
|
|
6
6
|
export * from './music-action-type.enum';
|
|
7
|
+
export * from './music-audio-action-type.enum';
|
|
8
|
+
export * from './music-generation-action-type.enum';
|
|
9
|
+
export * from './music-lyrics-structure.enum';
|
|
@@ -1,3 +1,10 @@
|
|
|
1
1
|
export enum MUSIC_ACTION_TYPE {
|
|
2
2
|
LYRICS = 'LYRICS',
|
|
3
|
+
BOOST_STYLE = 'BOOST_STYLE',
|
|
4
|
+
REMOVE_VOCALS = 'REMOVE_VOCALS',
|
|
5
|
+
EXTRACT_VOCALS = 'EXTRACT_VOCALS',
|
|
6
|
+
COVER = 'COVER',
|
|
7
|
+
EXTEND = 'EXTEND',
|
|
8
|
+
ADD_INSTRUMENTAL = 'ADD_INSTRUMENTAL',
|
|
9
|
+
ADD_VOCALS = 'ADD_VOCALS',
|
|
3
10
|
}
|
package/music/models/index.ts
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { AiVendorSchema } from '../../ai-vendor';
|
|
3
3
|
import { MusicModelWithVendorSchema } from './music-model-with-vendor.schema';
|
|
4
|
+
import { MusicAudioActionPricesSchema } from './music-config.schema';
|
|
4
5
|
|
|
5
6
|
export const MusicConfigWithVendorsSchema = z.object({
|
|
6
7
|
vendors: z.array(AiVendorSchema),
|
|
7
8
|
models: z.array(MusicModelWithVendorSchema),
|
|
9
|
+
audioActionPrices: MusicAudioActionPricesSchema,
|
|
8
10
|
});
|
|
9
11
|
|
|
10
12
|
export type MusicConfigWithVendors = z.infer<typeof MusicConfigWithVendorsSchema>;
|
|
@@ -1,8 +1,16 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { MusicModelSchema } from './music-model.schema';
|
|
3
|
+
import { MUSIC_AUDIO_ACTION_TYPE } from '../enums';
|
|
4
|
+
|
|
5
|
+
export const MusicAudioActionPricesSchema = z.record(
|
|
6
|
+
z.nativeEnum(MUSIC_AUDIO_ACTION_TYPE),
|
|
7
|
+
z.number(),
|
|
8
|
+
);
|
|
3
9
|
|
|
4
10
|
export const MusicConfigSchema = z.object({
|
|
5
11
|
models: z.array(MusicModelSchema),
|
|
12
|
+
audioActionPrices: MusicAudioActionPricesSchema,
|
|
6
13
|
});
|
|
7
14
|
|
|
8
15
|
export type MusicConfig = z.infer<typeof MusicConfigSchema>;
|
|
16
|
+
export type MusicAudioActionPrices = z.infer<typeof MusicAudioActionPricesSchema>;
|
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { JOB_STATUS } from '../../tools';
|
|
3
3
|
import { USER_REACTION } from '../../common';
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
MUSIC_AUDIO_ACTION_TYPE,
|
|
6
|
+
MUSIC_GENERATION_ACTION_TYPE,
|
|
7
|
+
MUSIC_LYRICS_STRUCTURE,
|
|
8
|
+
MUSIC_VOCAL_GENDER,
|
|
9
|
+
} from '../enums';
|
|
5
10
|
import { MusicTrackSchema } from './music-track.schema';
|
|
6
11
|
import { SUNO_MODE_TYPE } from '../enums/suno-mode-type.enum';
|
|
7
12
|
|
|
@@ -31,6 +36,172 @@ export const MusicJobParamsSchema = z.discriminatedUnion('mode', [
|
|
|
31
36
|
|
|
32
37
|
export type MusicJobParams = z.infer<typeof MusicJobParamsSchema>;
|
|
33
38
|
|
|
39
|
+
export const MusicLyricsParamsSchema = z.object({
|
|
40
|
+
prompt: z.string().min(1).max(1000),
|
|
41
|
+
style: z.string().min(1).max(200).optional(),
|
|
42
|
+
structure: z.nativeEnum(MUSIC_LYRICS_STRUCTURE),
|
|
43
|
+
});
|
|
44
|
+
export type MusicLyricsParams = z.infer<typeof MusicLyricsParamsSchema>;
|
|
45
|
+
|
|
46
|
+
export const MusicBackgroundParamsSchema = z.object({
|
|
47
|
+
prompt: z.string().min(1).max(450),
|
|
48
|
+
style: z.string(),
|
|
49
|
+
});
|
|
50
|
+
export type MusicBackgroundParams = z.infer<typeof MusicBackgroundParamsSchema>;
|
|
51
|
+
|
|
52
|
+
export const MusicSeparateVocalsParamsSchema = z.object({
|
|
53
|
+
externalId: z.string().uuid(),
|
|
54
|
+
audioId: z.string().min(1),
|
|
55
|
+
});
|
|
56
|
+
export type MusicSeparateVocalsParams = z.infer<typeof MusicSeparateVocalsParamsSchema>;
|
|
57
|
+
|
|
58
|
+
export const MusicUploadCoverParamsSchema = z.object({
|
|
59
|
+
audioId: z.string().uuid(),
|
|
60
|
+
uploadUrl: z.string().url(),
|
|
61
|
+
style: z.string().min(1).max(1000),
|
|
62
|
+
prompt: z.string().min(1).max(5000).optional(),
|
|
63
|
+
title: z.string().min(1).max(80).optional(),
|
|
64
|
+
negativeTags: z.string().max(1000).optional(),
|
|
65
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER).optional(),
|
|
66
|
+
instrumental: z.boolean().optional(),
|
|
67
|
+
});
|
|
68
|
+
export type MusicUploadCoverParams = z.infer<typeof MusicUploadCoverParamsSchema>;
|
|
69
|
+
|
|
70
|
+
export const MusicUploadExtendParamsSchema = z.object({
|
|
71
|
+
audioId: z.string().uuid(),
|
|
72
|
+
uploadUrl: z.string().url(),
|
|
73
|
+
continueAt: z.number().positive(),
|
|
74
|
+
prompt: z.string().min(1).max(5000),
|
|
75
|
+
style: z.string().min(1).max(1000).optional(),
|
|
76
|
+
title: z.string().min(1).max(80).optional(),
|
|
77
|
+
negativeTags: z.string().max(1000).optional(),
|
|
78
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER).optional(),
|
|
79
|
+
instrumental: z.boolean().optional(),
|
|
80
|
+
});
|
|
81
|
+
export type MusicUploadExtendParams = z.infer<typeof MusicUploadExtendParamsSchema>;
|
|
82
|
+
|
|
83
|
+
export const MusicAddInstrumentalParamsSchema = z.object({
|
|
84
|
+
audioId: z.string().uuid(),
|
|
85
|
+
uploadUrl: z.string().url(),
|
|
86
|
+
style: z.string().min(1).max(1000),
|
|
87
|
+
title: z.string().min(1).max(80).optional(),
|
|
88
|
+
negativeTags: z.string().max(1000).optional(),
|
|
89
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER).optional(),
|
|
90
|
+
});
|
|
91
|
+
export type MusicAddInstrumentalParams = z.infer<typeof MusicAddInstrumentalParamsSchema>;
|
|
92
|
+
|
|
93
|
+
export const MusicAddVocalsParamsSchema = z.object({
|
|
94
|
+
audioId: z.string().uuid(),
|
|
95
|
+
uploadUrl: z.string().url(),
|
|
96
|
+
prompt: z.string().min(1).max(5000),
|
|
97
|
+
style: z.string().min(1).max(1000),
|
|
98
|
+
title: z.string().min(1).max(80).optional(),
|
|
99
|
+
negativeTags: z.string().max(1000).optional(),
|
|
100
|
+
vocalGender: z.nativeEnum(MUSIC_VOCAL_GENDER).optional(),
|
|
101
|
+
});
|
|
102
|
+
export type MusicAddVocalsParams = z.infer<typeof MusicAddVocalsParamsSchema>;
|
|
103
|
+
|
|
104
|
+
export const MusicEditRequestSchema = z
|
|
105
|
+
.object({
|
|
106
|
+
actionType: z.nativeEnum(MUSIC_AUDIO_ACTION_TYPE),
|
|
107
|
+
modelId: z.string().uuid().optional(),
|
|
108
|
+
params: z.unknown(),
|
|
109
|
+
userId: z.string().optional(),
|
|
110
|
+
unregisteredUserId: z.string().optional(),
|
|
111
|
+
userBalance: z.number(),
|
|
112
|
+
})
|
|
113
|
+
.superRefine((data, ctx) => {
|
|
114
|
+
const requiresModel = ![
|
|
115
|
+
MUSIC_AUDIO_ACTION_TYPE.REMOVE_VOCALS,
|
|
116
|
+
MUSIC_AUDIO_ACTION_TYPE.EXTRACT_VOCALS,
|
|
117
|
+
].includes(data.actionType);
|
|
118
|
+
|
|
119
|
+
if (requiresModel && !data.modelId) {
|
|
120
|
+
ctx.addIssue({
|
|
121
|
+
code: z.ZodIssueCode.custom,
|
|
122
|
+
message: 'modelId is required',
|
|
123
|
+
path: ['modelId'],
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
const paramsValidation =
|
|
128
|
+
data.actionType === MUSIC_AUDIO_ACTION_TYPE.REMOVE_VOCALS ||
|
|
129
|
+
data.actionType === MUSIC_AUDIO_ACTION_TYPE.EXTRACT_VOCALS
|
|
130
|
+
? MusicSeparateVocalsParamsSchema.safeParse(data.params)
|
|
131
|
+
: data.actionType === MUSIC_AUDIO_ACTION_TYPE.COVER
|
|
132
|
+
? MusicUploadCoverParamsSchema.safeParse(data.params)
|
|
133
|
+
: data.actionType === MUSIC_AUDIO_ACTION_TYPE.EXTEND
|
|
134
|
+
? MusicUploadExtendParamsSchema.safeParse(data.params)
|
|
135
|
+
: data.actionType === MUSIC_AUDIO_ACTION_TYPE.ADD_INSTRUMENTAL
|
|
136
|
+
? MusicAddInstrumentalParamsSchema.safeParse(data.params)
|
|
137
|
+
: MusicAddVocalsParamsSchema.safeParse(data.params);
|
|
138
|
+
|
|
139
|
+
if (!paramsValidation.success) {
|
|
140
|
+
for (const issue of paramsValidation.error.issues) {
|
|
141
|
+
ctx.addIssue({
|
|
142
|
+
...issue,
|
|
143
|
+
path: ['params', ...issue.path],
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
export type MusicEditRequest = z.infer<typeof MusicEditRequestSchema>;
|
|
149
|
+
|
|
150
|
+
export const MusicEditActionResultSchema = z.object({
|
|
151
|
+
actionType: z.nativeEnum(MUSIC_AUDIO_ACTION_TYPE),
|
|
152
|
+
url: z.string(),
|
|
153
|
+
vocalUrl: z.string().optional(),
|
|
154
|
+
instrumentalUrl: z.string().optional(),
|
|
155
|
+
originUrl: z.string().optional(),
|
|
156
|
+
price: z.number(),
|
|
157
|
+
});
|
|
158
|
+
export type MusicEditActionResult = z.infer<typeof MusicEditActionResultSchema>;
|
|
159
|
+
|
|
160
|
+
export const MusicAnyJobParamsSchema = z.union([
|
|
161
|
+
MusicJobParamsSchema,
|
|
162
|
+
MusicUploadCoverParamsSchema,
|
|
163
|
+
MusicUploadExtendParamsSchema,
|
|
164
|
+
MusicAddInstrumentalParamsSchema,
|
|
165
|
+
MusicAddVocalsParamsSchema,
|
|
166
|
+
]);
|
|
167
|
+
export type MusicAnyJobParams = z.infer<typeof MusicAnyJobParamsSchema>;
|
|
168
|
+
|
|
169
|
+
export const MusicExecuteRequestSchema = z
|
|
170
|
+
.object({
|
|
171
|
+
actionType: z
|
|
172
|
+
.nativeEnum(MUSIC_GENERATION_ACTION_TYPE)
|
|
173
|
+
.optional()
|
|
174
|
+
.default(MUSIC_GENERATION_ACTION_TYPE.GENERATE),
|
|
175
|
+
modelId: z.string().uuid().optional(),
|
|
176
|
+
params: z.unknown(),
|
|
177
|
+
})
|
|
178
|
+
.superRefine((data, ctx) => {
|
|
179
|
+
if (data.actionType !== MUSIC_GENERATION_ACTION_TYPE.GENERATE_LYRICS && !data.modelId) {
|
|
180
|
+
ctx.addIssue({
|
|
181
|
+
code: z.ZodIssueCode.custom,
|
|
182
|
+
message: 'modelId is required',
|
|
183
|
+
path: ['modelId'],
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
const paramsValidation =
|
|
188
|
+
data.actionType === MUSIC_GENERATION_ACTION_TYPE.GENERATE_LYRICS
|
|
189
|
+
? MusicLyricsParamsSchema.safeParse(data.params)
|
|
190
|
+
: data.actionType === MUSIC_GENERATION_ACTION_TYPE.BACKGROUND
|
|
191
|
+
? MusicBackgroundParamsSchema.safeParse(data.params)
|
|
192
|
+
: MusicJobParamsSchema.safeParse(data.params);
|
|
193
|
+
|
|
194
|
+
if (!paramsValidation.success) {
|
|
195
|
+
for (const issue of paramsValidation.error.issues) {
|
|
196
|
+
ctx.addIssue({
|
|
197
|
+
...issue,
|
|
198
|
+
path: ['params', ...issue.path],
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
export type MusicExecuteRequest = z.infer<typeof MusicExecuteRequestSchema>;
|
|
204
|
+
|
|
34
205
|
export const MusicJobSchema = z.object({
|
|
35
206
|
uuid: z.string(),
|
|
36
207
|
prompt: z.string(),
|
|
@@ -42,7 +213,7 @@ export const MusicJobSchema = z.object({
|
|
|
42
213
|
error: z.string().nullable(),
|
|
43
214
|
modelId: z.string(),
|
|
44
215
|
price: z.number(),
|
|
45
|
-
params:
|
|
216
|
+
params: MusicAnyJobParamsSchema,
|
|
46
217
|
tracks: z.array(MusicTrackSchema),
|
|
47
218
|
attempts: z.array(z.any()),
|
|
48
219
|
userId: z.string().nullable().optional(),
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { MusicTrackSchema } from './music-track.schema';
|
|
3
|
+
|
|
4
|
+
export const MusicPlaylistSchema = z.object({
|
|
5
|
+
uuid: z.string().uuid(),
|
|
6
|
+
title: z.string(),
|
|
7
|
+
tracks: z.array(MusicTrackSchema).optional(),
|
|
8
|
+
trackCount: z.number(),
|
|
9
|
+
userId: z.string().uuid().nullable().optional(),
|
|
10
|
+
unregisteredUserId: z.string().uuid().nullable().optional(),
|
|
11
|
+
createdAt: z.date(),
|
|
12
|
+
updatedAt: z.date(),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export type MusicPlaylist = z.infer<typeof MusicPlaylistSchema>;
|
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { AttachedFileSchema } from '../../common';
|
|
3
|
+
|
|
4
|
+
const MusicTrackAudioFileSchema = AttachedFileSchema.pick({
|
|
5
|
+
uuid: true,
|
|
6
|
+
url: true,
|
|
7
|
+
mimeType: true,
|
|
8
|
+
}).extend({
|
|
9
|
+
duration: z.number().nullable(),
|
|
10
|
+
originalName: z.string().nullable().optional(),
|
|
11
|
+
});
|
|
2
12
|
|
|
3
13
|
export const MusicTrackSchema = z.object({
|
|
4
14
|
uuid: z.string(),
|
|
5
15
|
title: z.string(),
|
|
6
16
|
audioId: z.string(),
|
|
7
17
|
audioUrl: z.string(),
|
|
18
|
+
audioFile: MusicTrackAudioFileSchema.nullable().optional(),
|
|
8
19
|
coverUrl: z.string(),
|
|
9
20
|
prompt: z.string().nullable(),
|
|
21
|
+
fullLyrics: z.string().nullable().optional(),
|
|
10
22
|
tags: z.string(),
|
|
11
23
|
duration: z.number(),
|
|
12
24
|
waveformPeaks: z.array(z.number()),
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { ICommandResponseSchema } from '../../common/models/command-response.schema';
|
|
3
|
+
import { MusicPlaylistSchema } from '../models/music-playlist.schema';
|
|
4
|
+
|
|
5
|
+
export namespace FindMusicPlaylistsQuery {
|
|
6
|
+
export const RequestSchema = z
|
|
7
|
+
.object({
|
|
8
|
+
userId: z.string().uuid().optional(),
|
|
9
|
+
unregisteredUserId: z.string().uuid().optional(),
|
|
10
|
+
})
|
|
11
|
+
.refine(
|
|
12
|
+
(data) => {
|
|
13
|
+
return Boolean(data.userId) !== Boolean(data.unregisteredUserId);
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
message: 'At least userId or unregisteredUserId must be present',
|
|
17
|
+
path: ['userId', 'unregisteredUserId'],
|
|
18
|
+
},
|
|
19
|
+
);
|
|
20
|
+
export type Request = z.infer<typeof RequestSchema>;
|
|
21
|
+
|
|
22
|
+
export const ResponseSchema = ICommandResponseSchema(z.array(MusicPlaylistSchema));
|
|
23
|
+
export type Response = z.infer<typeof ResponseSchema>;
|
|
24
|
+
}
|
package/music/queries/index.ts
CHANGED
|
@@ -1,16 +1,24 @@
|
|
|
1
1
|
export const MUSIC_AMQP_ROUTES = {
|
|
2
2
|
EXECUTE: 'tools.music.execute.rpc',
|
|
3
|
+
EDIT: 'tools.music.edit.rpc',
|
|
3
4
|
GET_PRICE: 'tools.music.get-price.rpc',
|
|
4
5
|
GENERATE_LYRICS: 'tools.music.generate-lyrics.rpc',
|
|
6
|
+
BOOST_STYLE: 'tools.music.boost-style.rpc',
|
|
5
7
|
CONVERT_TO_WAV: 'tools.music.convert-to-wav.rpc',
|
|
6
8
|
CONFIG: 'tools.music.config.rpc',
|
|
7
9
|
CONFIG_WITH_VENDORS: 'tools.music.config-with-vendors.rpc',
|
|
8
10
|
GET_JOB: 'tools.music.jobs.get.rpc',
|
|
9
11
|
LIST_JOBS: 'tools.music.jobs.list.rpc',
|
|
12
|
+
LIST_PLAYLISTS: 'tools.music.playlists.list.rpc',
|
|
10
13
|
SET_REACTION: 'tools.music.jobs.set-reaction.rpc',
|
|
11
14
|
UPDATE_TITLE: 'tools.music.jobs.update-title.rpc',
|
|
12
15
|
UPDATE_FAVORITE: 'tools.music.jobs.update-favorite.rpc',
|
|
13
16
|
UPDATE_JOB: 'tools.music.jobs.update.rpc',
|
|
17
|
+
CREATE_PLAYLIST: 'tools.music.playlists.create.rpc',
|
|
18
|
+
UPDATE_PLAYLIST: 'tools.music.playlists.update.rpc',
|
|
19
|
+
DELETE_PLAYLIST: 'tools.music.playlists.delete.rpc',
|
|
20
|
+
ADD_TRACK_TO_PLAYLIST: 'tools.music.playlists.add-track.rpc',
|
|
21
|
+
REMOVE_TRACK_FROM_PLAYLIST: 'tools.music.playlists.remove-track.rpc',
|
|
14
22
|
SOFT_DELETE: 'tools.music.jobs.soft-delete.rpc',
|
|
15
23
|
SOFT_DELETE_ALL: 'tools.music.jobs.soft-delete-all.rpc',
|
|
16
24
|
RETRY: 'tools.music.jobs.retry.rpc',
|