diff --git a/src/server/index.ts b/src/server/index.ts index 80088ca..362bace 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -1121,6 +1121,33 @@ app.post('/api/admin/upload', requireAdmin, adminRateLimit, async (c) => { }) // ============ ADMIN PROPERTIES ============ +app.get('/api/admin/properties', requireAdmin, (c) => { + const status = c.req.query('status') || 'active' + const type = c.req.query('type') + const limit = parseInt(c.req.query('limit') || '100') + const offset = parseInt(c.req.query('offset') || '0') + + let query = 'SELECT * FROM properties WHERE status = ?' + const params: any[] = [status] + + if (type) { + query += ' AND type = ?' + params.push(type) + } + + query += ' ORDER BY is_featured DESC, created_at DESC LIMIT ? OFFSET ?' + params.push(limit, offset) + + const properties = db.query(query).all(...params) + const total = (db.query('SELECT COUNT(*) as count FROM properties WHERE status = ?').get(status) as any)?.count || 0 + + return c.json({ + success: true, + data: properties, + total + }) +}) + app.post('/api/admin/properties', requireAdmin, adminRateLimit, async (c) => { try { const body = await c.req.json()