@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
JavaScript
/**
* 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