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