Ad hoc draft of service interfaces:
interface PageLookup { function getPageById( int $pageId ) : ?PageRecord; function getPage( PageIdentity $identity ) : ?PageRecord; function getPageIdentity( int $namespace, string $name ) : PageIdentity; } interface PageBatchLookup { function getPageBatch( array $rows ) : array; // PageRecord[] function getPageIdentityBatch( array $rows ) : array; // PageIdentity[] } interface PageUpdaterFactory extends PageLookup { function getPageUpdater( PageIdentity $page, User $actor ) : PageUpdater; } interface PageUpdaterBackend { // internal, for use with PageUpdater function insertPageOn( PageIdentity $page, IDatabase $dbw ); function updateRevisionOn( PageIdentity $page, RevisionRecord $revision, IDatabase $dbw, $options = [] ); } interface PageStateBackend { // internal, for use with LinksUpdate function updateTouched( PageIdentity $page, string $timestamp = null ); }