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

45 lines 1.75 kB
/** * get_provision_eu_basis — Get EU/international legal basis for a specific provision. */ import { resolveDocumentId } from '../utils/statute-id.js'; import { generateResponseMetadata } from '../utils/metadata.js'; export async function getProvisionEUBasis(db, input) { const resolvedId = resolveDocumentId(db, input.document_id); if (!resolvedId) { return { results: [], _metadata: generateResponseMetadata(db) }; } try { db.prepare('SELECT 1 FROM eu_references LIMIT 1').get(); } catch { return { results: [], _metadata: { ...generateResponseMetadata(db), ...{ note: 'EU/international references not available in this database tier' }, }, }; } // Find the provision const ref = input.provision_ref.trim(); const provision = db.prepare("SELECT id FROM legal_provisions WHERE document_id = ? AND (provision_ref = ? OR provision_ref = ? OR provision_ref = ? OR section = ?)").get(resolvedId, ref, `s${ref}`, `art${ref}`, ref); if (!provision) { return { results: [], _metadata: generateResponseMetadata(db) }; } const rows = db.prepare(` SELECT er.eu_document_id, ed.type as eu_document_type, COALESCE(ed.title, ed.short_name) as eu_document_title, er.eu_article, er.reference_type, er.reference_context, er.full_citation FROM eu_references er LEFT JOIN eu_documents ed ON ed.id = er.eu_document_id WHERE er.provision_id = ? ORDER BY er.reference_type, er.eu_document_id `).all(provision.id); return { results: rows, _metadata: generateResponseMetadata(db) }; } //# sourceMappingURL=get-provision-eu-basis.js.map