Merge pull request 'duplicate-record-validation' (#8) from duplicate-record-validation into main
Reviewed-on: #8
This commit is contained in:
commit
a209513a68
|
|
@ -11,8 +11,48 @@ const auth = new google.auth.GoogleAuth({
|
|||
const sheets = google.sheets({ version: 'v4', auth });
|
||||
const SPREADSHEET_ID = import.meta.env.GOOGLE_SHEET_ID;
|
||||
|
||||
async function emailExists(email: string): Promise<boolean> {
|
||||
const formula = `=COUNTIF(G:G,"${email}")`;
|
||||
|
||||
// Escribir fórmula en celda auxiliar
|
||||
await sheets.spreadsheets.values.update({
|
||||
spreadsheetId: SPREADSHEET_ID,
|
||||
range: 'DATABASE!Z1', // usa una columna libre
|
||||
valueInputOption: 'USER_ENTERED',
|
||||
requestBody: {
|
||||
values: [[formula]],
|
||||
},
|
||||
});
|
||||
|
||||
// Leer resultado calculado
|
||||
const result = await sheets.spreadsheets.values.get({
|
||||
spreadsheetId: SPREADSHEET_ID,
|
||||
range: 'DATABASE!Z1',
|
||||
valueRenderOption: 'UNFORMATTED_VALUE',
|
||||
});
|
||||
|
||||
const count = result.data.values?.[0]?.[0] || 0;
|
||||
|
||||
return Number(count) > 0;
|
||||
}
|
||||
|
||||
|
||||
export async function appendToSheet(values: any[]) {
|
||||
try {
|
||||
const email = values[6]; // índice donde está el email en tu array
|
||||
|
||||
if (!email) {
|
||||
throw new Error('Email requerido');
|
||||
}
|
||||
|
||||
const exists = await emailExists(email);
|
||||
if (exists) {
|
||||
return {
|
||||
success: false,
|
||||
message: 'El email ya existe en la base de datos',
|
||||
};
|
||||
}
|
||||
|
||||
await sheets.spreadsheets.values.append({
|
||||
spreadsheetId: SPREADSHEET_ID,
|
||||
range: 'DATABASE!A2:H2',
|
||||
|
|
@ -21,7 +61,13 @@ export async function appendToSheet(values: any[]) {
|
|||
values: [values],
|
||||
},
|
||||
});
|
||||
|
||||
return {
|
||||
success: true,
|
||||
message: 'Registro guardado correctamente',
|
||||
};
|
||||
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue