Skip to content

Commit

Permalink
Merge pull request #166 from Vitruveo/feat/save-store-artwork
Browse files Browse the repository at this point in the history
feat: save artwork filters in db
  • Loading branch information
m-paice authored Dec 3, 2024
2 parents b5381ab + 9a5aec0 commit 00d4304
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 9 deletions.
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vtru-studio-api",
"version": "1.0.602",
"version": "1.0.604",
"description": "",
"main": "index.js",
"scripts": {
Expand Down
11 changes: 7 additions & 4 deletions src/features/stores/controller/core.ts
Original file line number Diff line number Diff line change
Expand Up @@ -253,13 +253,16 @@ route.patch('/:id', validateBodyForUpdateStepStores, async (req, res) => {

const payload = req.body as z.infer<typeof schemaValidationStepName>;

const data = { ...payload.data };

if (payload.stepName === 'organization') {
data.formats = stores.organization.formats;
}

await model.updateStepStores({
id: req.params.id,
stepName: payload.stepName,
data: {
...payload.data,
formats: stores.organization.formats,
},
data,
});

res.json({
Expand Down
5 changes: 4 additions & 1 deletion src/features/stores/controller/rules.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { nanoid } from 'nanoid';
import { NextFunction, Request, Response } from 'express';
import { APIResponse } from '../../../services';
import {
schemaValidationArtworks,
schemaValidationForCreateStores,
schemaValidationOrganization,
schemaValidationStepName,
Expand Down Expand Up @@ -65,7 +66,9 @@ export const validateBodyForUpdateStepStores = async (
if (req.body.stepName === 'organization') {
req.body.data = schemaValidationOrganization.parse(req.body.data);
}

if (req.body.stepName === 'artworks') {
req.body.data = schemaValidationArtworks.parse(req.body.data);
}
next();
} catch (error) {
res.status(400).json({
Expand Down
50 changes: 49 additions & 1 deletion src/features/stores/controller/schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,55 @@ export const schemaValidationOrganization = z.object({
formats: FormatSchema.nullable().default(null),
});

export const schemaValidationArtworks = z.object({
general: z.object({
shortcuts: z
.object({
hideNudity: z.boolean().optional(),
hideAI: z.boolean().optional(),
photography: z.boolean().optional(),
animation: z.boolean().optional(),
physicalArt: z.boolean().optional(),
digitalArt: z.boolean().optional(),
includeSold: z.boolean().optional(),
hasBTS: z.boolean().optional(),
})
.optional(),
licenses: z
.object({
minPrice: z.number().optional(),
maxPrice: z.number().optional(),
enabled: z.boolean().optional(),
})
.optional(),
}),
context: z.object({
culture: z.array(z.string()).optional(),
mood: z.array(z.string()).optional(),
orientation: z.array(z.string()).optional(),
precision: z.number().optional(),
colors: z.array(z.string()).optional(),
}),
taxonomy: z.object({
objectType: z.array(z.string()).optional(),
tags: z.array(z.string()).optional(),
collections: z.array(z.string()).optional(),
aiGeneration: z.array(z.string()).optional(),
arEnabled: z.array(z.string()).optional(),
nudity: z.array(z.string()).optional(),
category: z.array(z.string()).optional(),
medium: z.array(z.string()).optional(),
style: z.array(z.string()).optional(),
subject: z.array(z.string()).optional(),
}),
artists: z.object({
name: z.array(z.string()).optional(),
nationality: z.array(z.string()).optional(),
residence: z.array(z.string()).optional(),
}),
});

export const schemaValidationStepName = z.object({
stepName: z.enum(['organization']),
stepName: z.enum(['organization', 'artworks']),
data: z.any(),
});

0 comments on commit 00d4304

Please sign in to comment.