mirror of
https://github.com/xtr-dev/rondevu-server.git
synced 2025-12-10 10:53:24 +00:00
Remove unused heartbeat endpoint and storage method
- Removed PUT /offers/:offerId/heartbeat endpoint - Removed updateOfferLastSeen() from storage interface and implementations - last_seen column is still in DB but not used for cleanup - Cleanup only uses expires_at, so heartbeat was non-functional 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
33
src/app.ts
33
src/app.ts
@@ -314,39 +314,6 @@ export function createApp(storage: Storage, config: Config) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* PUT /offers/:offerId/heartbeat
|
|
||||||
* Update last_seen timestamp for an offer
|
|
||||||
* Requires authentication and ownership
|
|
||||||
*/
|
|
||||||
app.put('/offers/:offerId/heartbeat', authMiddleware, async (c) => {
|
|
||||||
try {
|
|
||||||
const offerId = c.req.param('offerId');
|
|
||||||
const peerId = getAuthenticatedPeerId(c);
|
|
||||||
|
|
||||||
// Verify ownership
|
|
||||||
const offer = await storage.getOfferById(offerId);
|
|
||||||
if (!offer) {
|
|
||||||
return c.json({ error: 'Offer not found or expired' }, 404);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (offer.peerId !== peerId) {
|
|
||||||
return c.json({ error: 'Not authorized to update this offer' }, 403);
|
|
||||||
}
|
|
||||||
|
|
||||||
const now = Date.now();
|
|
||||||
await storage.updateOfferLastSeen(offerId, now);
|
|
||||||
|
|
||||||
return c.json({
|
|
||||||
id: offerId,
|
|
||||||
lastSeen: now
|
|
||||||
}, 200);
|
|
||||||
} catch (err) {
|
|
||||||
console.error('Error updating offer heartbeat:', err);
|
|
||||||
return c.json({ error: 'Internal server error' }, 500);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DELETE /offers/:offerId
|
* DELETE /offers/:offerId
|
||||||
* Delete a specific offer
|
* Delete a specific offer
|
||||||
|
|||||||
@@ -155,14 +155,6 @@ export class D1Storage implements Storage {
|
|||||||
return this.rowToOffer(result as any);
|
return this.rowToOffer(result as any);
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateOfferLastSeen(offerId: string, lastSeen: number): Promise<void> {
|
|
||||||
await this.db.prepare(`
|
|
||||||
UPDATE offers
|
|
||||||
SET last_seen = ?
|
|
||||||
WHERE id = ? AND expires_at > ?
|
|
||||||
`).bind(lastSeen, offerId, Date.now()).run();
|
|
||||||
}
|
|
||||||
|
|
||||||
async deleteOffer(offerId: string, ownerPeerId: string): Promise<boolean> {
|
async deleteOffer(offerId: string, ownerPeerId: string): Promise<boolean> {
|
||||||
const result = await this.db.prepare(`
|
const result = await this.db.prepare(`
|
||||||
DELETE FROM offers
|
DELETE FROM offers
|
||||||
|
|||||||
@@ -176,16 +176,6 @@ export class SQLiteStorage implements Storage {
|
|||||||
return this.rowToOffer(row);
|
return this.rowToOffer(row);
|
||||||
}
|
}
|
||||||
|
|
||||||
async updateOfferLastSeen(offerId: string, lastSeen: number): Promise<void> {
|
|
||||||
const stmt = this.db.prepare(`
|
|
||||||
UPDATE offers
|
|
||||||
SET last_seen = ?
|
|
||||||
WHERE id = ? AND expires_at > ?
|
|
||||||
`);
|
|
||||||
|
|
||||||
stmt.run(lastSeen, offerId, Date.now());
|
|
||||||
}
|
|
||||||
|
|
||||||
async deleteOffer(offerId: string, ownerPeerId: string): Promise<boolean> {
|
async deleteOffer(offerId: string, ownerPeerId: string): Promise<boolean> {
|
||||||
const stmt = this.db.prepare(`
|
const stmt = this.db.prepare(`
|
||||||
DELETE FROM offers
|
DELETE FROM offers
|
||||||
|
|||||||
@@ -80,13 +80,6 @@ export interface Storage {
|
|||||||
*/
|
*/
|
||||||
getOfferById(offerId: string): Promise<Offer | null>;
|
getOfferById(offerId: string): Promise<Offer | null>;
|
||||||
|
|
||||||
/**
|
|
||||||
* Updates the last_seen timestamp for an offer (heartbeat)
|
|
||||||
* @param offerId Offer identifier
|
|
||||||
* @param lastSeen New last_seen timestamp
|
|
||||||
*/
|
|
||||||
updateOfferLastSeen(offerId: string, lastSeen: number): Promise<void>;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes an offer (with ownership verification)
|
* Deletes an offer (with ownership verification)
|
||||||
* @param offerId Offer identifier
|
* @param offerId Offer identifier
|
||||||
|
|||||||
Reference in New Issue
Block a user