Release 2025-05-23-5vNZ
This commit is contained in:
@@ -859,6 +859,22 @@ const generateFakeServiceContactMethod = (serviceId: number) => {
|
|||||||
{
|
{
|
||||||
value: `https://x.com/${faker.internet.username()}`,
|
value: `https://x.com/${faker.internet.username()}`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
value: `https://matrix.to/#/@${faker.internet.username()}:${faker.internet.domainName()}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: `https://instagram.com/${faker.internet.username()}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: `https://linkedin.com/in/${faker.helpers.slugify(faker.person.fullName())}`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: faker.lorem.word({ length: 2 }),
|
||||||
|
value: `https://bitcointalk.org/index.php?topic=${faker.number.int({ min: 1, max: 1000000 }).toString()}.0`,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
value: `https://bitcointalk.org/index.php?topic=${faker.number.int({ min: 1, max: 1000000 }).toString()}.0`,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
value: faker.internet.url(),
|
value: faker.internet.url(),
|
||||||
},
|
},
|
||||||
@@ -867,7 +883,7 @@ const generateFakeServiceContactMethod = (serviceId: number) => {
|
|||||||
value: faker.internet.url(),
|
value: faker.internet.url(),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
value: `https://www.linkedin.com/company/${faker.helpers.slugify(faker.company.name())}`,
|
value: `https://linkedin.com/company/${faker.helpers.slugify(faker.company.name())}`,
|
||||||
},
|
},
|
||||||
] as const satisfies Partial<Prisma.ServiceContactMethodCreateInput>[]
|
] as const satisfies Partial<Prisma.ServiceContactMethodCreateInput>[]
|
||||||
|
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ const serviceSchemaBase = z.object({
|
|||||||
slug: z
|
slug: z
|
||||||
.string()
|
.string()
|
||||||
.regex(/^[a-z0-9-]+$/, 'Allowed characters: lowercase letters, numbers, and hyphens')
|
.regex(/^[a-z0-9-]+$/, 'Allowed characters: lowercase letters, numbers, and hyphens')
|
||||||
.optional(),
|
.nullable(),
|
||||||
name: z.string().min(1).max(20),
|
name: z.string().min(1).max(20),
|
||||||
description: z.string().min(1),
|
description: z.string().min(1),
|
||||||
serviceUrls: stringListOfUrlsSchemaRequired,
|
serviceUrls: stringListOfUrlsSchemaRequired,
|
||||||
@@ -28,12 +28,12 @@ const serviceSchemaBase = z.object({
|
|||||||
attributes: z.array(z.coerce.number().int().positive()),
|
attributes: z.array(z.coerce.number().int().positive()),
|
||||||
categories: z.array(z.coerce.number().int().positive()).min(1),
|
categories: z.array(z.coerce.number().int().positive()).min(1),
|
||||||
verificationStatus: z.nativeEnum(VerificationStatus),
|
verificationStatus: z.nativeEnum(VerificationStatus),
|
||||||
verificationSummary: z.string().optional().nullable().default(null),
|
verificationSummary: z.string().nullable(),
|
||||||
verificationProofMd: z.string().optional().nullable().default(null),
|
verificationProofMd: z.string().nullable(),
|
||||||
acceptedCurrencies: z.array(z.nativeEnum(Currency)),
|
acceptedCurrencies: z.array(z.nativeEnum(Currency)),
|
||||||
referral: z.string().optional().nullable().default(null),
|
referral: z.string().nullable(),
|
||||||
imageFile: imageFileSchema,
|
imageFile: imageFileSchema,
|
||||||
overallScore: zodCohercedNumber(z.number().int().min(0).max(10)).optional(),
|
overallScore: zodCohercedNumber(z.number().int().min(0).max(10)).nullable(),
|
||||||
serviceVisibility: z.nativeEnum(ServiceVisibility),
|
serviceVisibility: z.nativeEnum(ServiceVisibility),
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -187,13 +187,17 @@ export const adminServiceActions = {
|
|||||||
accept: 'form',
|
accept: 'form',
|
||||||
permissions: 'admin',
|
permissions: 'admin',
|
||||||
input: z.object({
|
input: z.object({
|
||||||
label: z.string().min(1).max(50).optional(),
|
label: z.string().min(1).max(50).nullable(),
|
||||||
value: z.string().url(),
|
value: z.string().url(),
|
||||||
serviceId: z.number().int().positive(),
|
serviceId: z.number().int().positive(),
|
||||||
}),
|
}),
|
||||||
handler: async (input) => {
|
handler: async (input) => {
|
||||||
const contactMethod = await prisma.serviceContactMethod.create({
|
const contactMethod = await prisma.serviceContactMethod.create({
|
||||||
data: input,
|
data: {
|
||||||
|
label: input.label,
|
||||||
|
value: input.value,
|
||||||
|
serviceId: input.serviceId,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
return { contactMethod }
|
return { contactMethod }
|
||||||
},
|
},
|
||||||
@@ -203,16 +207,19 @@ export const adminServiceActions = {
|
|||||||
accept: 'form',
|
accept: 'form',
|
||||||
permissions: 'admin',
|
permissions: 'admin',
|
||||||
input: z.object({
|
input: z.object({
|
||||||
id: z.number().int().positive().optional(),
|
id: z.number().int().positive(),
|
||||||
label: z.string().min(1).max(50).optional(),
|
label: z.string().min(1).max(50).nullable(),
|
||||||
value: z.string().url(),
|
value: z.string().url(),
|
||||||
serviceId: z.number().int().positive(),
|
serviceId: z.number().int().positive(),
|
||||||
}),
|
}),
|
||||||
handler: async (input) => {
|
handler: async (input) => {
|
||||||
const { id, ...data } = input
|
|
||||||
const contactMethod = await prisma.serviceContactMethod.update({
|
const contactMethod = await prisma.serviceContactMethod.update({
|
||||||
where: { id },
|
where: { id: input.id },
|
||||||
data,
|
data: {
|
||||||
|
label: input.label,
|
||||||
|
value: input.value,
|
||||||
|
serviceId: input.serviceId,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
return { contactMethod }
|
return { contactMethod }
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user