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 sheets = google.sheets({ version: 'v4', auth });
|
||||||
const SPREADSHEET_ID = import.meta.env.GOOGLE_SHEET_ID;
|
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[]) {
|
export async function appendToSheet(values: any[]) {
|
||||||
try {
|
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({
|
await sheets.spreadsheets.values.append({
|
||||||
spreadsheetId: SPREADSHEET_ID,
|
spreadsheetId: SPREADSHEET_ID,
|
||||||
range: 'DATABASE!A2:H2',
|
range: 'DATABASE!A2:H2',
|
||||||
|
|
@ -21,6 +61,12 @@ export async function appendToSheet(values: any[]) {
|
||||||
values: [values],
|
values: [values],
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return {
|
||||||
|
success: true,
|
||||||
|
message: 'Registro guardado correctamente',
|
||||||
|
};
|
||||||
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
throw error;
|
throw error;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue