Skip to content

Commit 3185c26

Browse files
committed
agrega server actions de la direccion
1 parent 01743a6 commit 3185c26

File tree

3 files changed

+65
-3
lines changed

3 files changed

+65
-3
lines changed

prisma/schema.prisma

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,6 @@ model UserAddress {
9191
// Relaciones
9292
country Country @relation(fields: [countryId], references: [id])
9393
countryId String
94-
95-
user User @relation(fields: [userId], references: [id])
96-
userId String @unique
94+
user User @relation(fields: [userId], references: [id])
95+
userId String @unique
9796
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
'use server';
2+
3+
import type { Address } from '@/interfaces/address.interface';
4+
import prisma from '@/lib/prisma';
5+
6+
export const setUserAddress = async (address: Address, userId: string) => {
7+
try {
8+
const newAddress = await createOrReplaceAddress(address, userId);
9+
10+
return {
11+
ok: true,
12+
address: newAddress,
13+
message: 'Dirección guardada',
14+
};
15+
} catch (error) {
16+
console.log(error);
17+
return {
18+
ok: false,
19+
message: 'Error al guardar la dirección',
20+
};
21+
}
22+
};
23+
24+
const createOrReplaceAddress = async (address: Address, userId: string) => {
25+
try {
26+
const storedAddress = await prisma.userAddress.findFirst({ where: { userId } });
27+
const { rememberAddress, country, address2 = '', ...data } = address;
28+
29+
const addressToSave = {
30+
...data,
31+
address2,
32+
countryId: country,
33+
userId,
34+
};
35+
36+
if (!storedAddress) {
37+
const newAddress = await prisma.userAddress.create({
38+
data: addressToSave,
39+
});
40+
return newAddress;
41+
}
42+
43+
const updatedAddress = await prisma.userAddress.update({
44+
where: { id: storedAddress.id },
45+
data: addressToSave,
46+
});
47+
return updatedAddress;
48+
} catch (error) {
49+
console.log(error);
50+
throw new Error('Error al crear o reemplazar la dirección');
51+
}
52+
};
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface Address {
2+
firstName: string;
3+
lastName: string;
4+
address: string;
5+
address2?: string;
6+
postalCode: string;
7+
city: string;
8+
country: string;
9+
phone: string;
10+
rememberAddress: boolean;
11+
}

0 commit comments

Comments
 (0)