UNPKG

@ansvar/singapore-law-mcp

Version:

Complete Singapore law database — 523 Acts, 28K+ provisions from Singapore Statutes Online (sso.agc.gov.sg) with full-text search, definitions, and citation support

58 lines 1.88 kB
/** * search_eu_implementations — Search EU directives/regulations with Singapore implementing/aligning legislation. */ import { generateResponseMetadata } from '../utils/metadata.js'; export async function searchEUImplementations(db, input) { try { db.prepare('SELECT 1 FROM eu_documents LIMIT 1').get(); } catch { return { results: [], _metadata: { ...generateResponseMetadata(db), ...{ note: 'EU/international documents not available in this database tier' }, }, }; } const limit = Math.min(Math.max(input.limit ?? 20, 1), 100); let sql = ` SELECT ed.id as eu_document_id, ed.type, ed.year, ed.number, ed.title, ed.short_name, COUNT(DISTINCT er.document_id) as singapore_statute_count FROM eu_documents ed LEFT JOIN eu_references er ON er.eu_document_id = ed.id WHERE 1=1 `; const params = []; if (input.query) { sql += ' AND (ed.title LIKE ? OR ed.short_name LIKE ? OR ed.description LIKE ?)'; params.push(`%${input.query}%`, `%${input.query}%`, `%${input.query}%`); } if (input.type) { sql += ' AND ed.type = ?'; params.push(input.type); } if (input.year_from) { sql += ' AND ed.year >= ?'; params.push(input.year_from); } if (input.year_to) { sql += ' AND ed.year <= ?'; params.push(input.year_to); } sql += ' GROUP BY ed.id'; if (input.has_singapore_implementation) { sql += ' HAVING singapore_statute_count > 0'; } sql += ' ORDER BY ed.year DESC, ed.number DESC LIMIT ?'; params.push(limit); const rows = db.prepare(sql).all(...params); return { results: rows, _metadata: generateResponseMetadata(db) }; } //# sourceMappingURL=search-eu-implementations.js.map