refactor db up check in functions
This commit is contained in:
parent
16b6b4edf9
commit
512b827b40
115
src/db.js
115
src/db.js
@ -92,11 +92,7 @@ const database = {
|
||||
console.error("Pubkey is required");
|
||||
return;
|
||||
}
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
await pool.query(
|
||||
'INSERT INTO "users" (uuid, pubkey) VALUES (DEFAULT, $1)',
|
||||
@ -108,23 +104,9 @@ const database = {
|
||||
console.error('Error adding user:', err);
|
||||
throw err;
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
createRoom: async (pubkey1, pubkey2) => {
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
const userQuery = 'SELECT uuid FROM users WHERE pubkey = $1';
|
||||
const uuidRes1 = await pool.query(userQuery, [pubkey1]);
|
||||
@ -152,23 +134,9 @@ const database = {
|
||||
console.error('Error creating the room:', err);
|
||||
throw err;
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
getRooms: async (pubkey) => {
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
const roomsRes = await pool.query(
|
||||
'SELECT m.room_uuid FROM room_members m, users u WHERE m.user_uuid = u.uuid AND u.pubkey = $1',
|
||||
@ -179,23 +147,9 @@ const database = {
|
||||
console.error('Error retrieving rooms:', err);
|
||||
throw err;
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
getRoomMembers: async (roomid) => {
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
const members = await pool.query(
|
||||
'SELECT u.pubkey FROM room_members r, users u WHERE r.user_uuid = u.uuid AND r.room_uuid = $1',
|
||||
@ -206,23 +160,9 @@ const database = {
|
||||
console.error('Error retrieving rooms:', err);
|
||||
throw err;
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
getPeers: async (pubkey) => {
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
const peers = await pool.query(
|
||||
`SELECT u1.pubkey
|
||||
@ -239,23 +179,9 @@ const database = {
|
||||
console.error('Error retrieving peers:', err);
|
||||
throw err;
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
getPublicKeys: async () => {
|
||||
const maxRetries = 5;
|
||||
let retries = 0;
|
||||
while (retries < maxRetries) {
|
||||
const dbUp = await database.checkIfDatabaseIsUp();
|
||||
if (dbUp) {
|
||||
await retryWithDelay(database.checkIfDatabaseIsUp, 5);
|
||||
try {
|
||||
const result = await pool.query('SELECT pubkey FROM users');
|
||||
const publicKeys = result.rows.map(row => row.pubkey);
|
||||
@ -264,17 +190,26 @@ const database = {
|
||||
console.error('Error retrieving public keys:', err);
|
||||
throw new Error('Error retrieving public keys');
|
||||
}
|
||||
} else {
|
||||
console.log('Waiting for the database to start...');
|
||||
retries += 1;
|
||||
if (retries < maxRetries) {
|
||||
await new Promise(resolve => setTimeout(resolve, 10000));
|
||||
} else {
|
||||
console.error(`Failed to connect to the database after ${maxRetries} attempts.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
const retryWithDelay = (operation, retries = 5, delay = 5000) => new Promise((resolve, reject) => {
|
||||
return operation()
|
||||
.then(resolve)
|
||||
.catch((err) => {
|
||||
if (retries > 0) {
|
||||
return wait(delay)
|
||||
.then(retryWithDelay.bind(null, operation, retries - 1, delay))
|
||||
.then(resolve)
|
||||
.catch(reject);
|
||||
}
|
||||
|
||||
return reject(err);
|
||||
});
|
||||
});
|
||||
|
||||
const wait = (time_in_ms) => new Promise((resolve) => {
|
||||
setTimeout(() => resolve(), time_in_ms);
|
||||
});
|
||||
|
||||
module.exports = database;
|
||||
|
Loading…
x
Reference in New Issue
Block a user