From 325d7b14d59adcee6db5c5b92f498e9d176bd593 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 9 Apr 2024 10:26:20 +0100 Subject: [PATCH 1/2] chore: rename role -> membership --- ...gotten_one.sql => 0000_careless_magus.sql} | 36 ++-- drizzle/project/meta/0000_snapshot.json | 162 +++++++++--------- drizzle/project/meta/_journal.json | 4 +- mapeo-schema-3.0.0-next.14.tgz | Bin 0 -> 97184 bytes package-lock.json | 7 +- package.json | 2 +- src/datastore/index.js | 2 +- src/mapeo-project.js | 12 +- src/roles.js | 52 +++--- src/schema/project.js | 7 +- test-e2e/members.js | 36 ++-- 11 files changed, 165 insertions(+), 155 deletions(-) rename drizzle/project/{0000_supreme_forgotten_one.sql => 0000_careless_magus.sql} (97%) create mode 100644 mapeo-schema-3.0.0-next.14.tgz diff --git a/drizzle/project/0000_supreme_forgotten_one.sql b/drizzle/project/0000_careless_magus.sql similarity index 97% rename from drizzle/project/0000_supreme_forgotten_one.sql rename to drizzle/project/0000_careless_magus.sql index 9010ac79..843623ff 100644 --- a/drizzle/project/0000_supreme_forgotten_one.sql +++ b/drizzle/project/0000_careless_magus.sql @@ -85,6 +85,24 @@ CREATE TABLE `icon` ( `forks` text NOT NULL ); --> statement-breakpoint +CREATE TABLE `membership_backlink` ( + `versionId` text PRIMARY KEY NOT NULL +); +--> statement-breakpoint +CREATE TABLE `membership` ( + `docId` text PRIMARY KEY NOT NULL, + `versionId` text NOT NULL, + `schemaName` text NOT NULL, + `createdAt` text NOT NULL, + `createdBy` text NOT NULL, + `updatedAt` text NOT NULL, + `links` text NOT NULL, + `deleted` integer NOT NULL, + `roleId` text NOT NULL, + `fromIndex` integer NOT NULL, + `forks` text NOT NULL +); +--> statement-breakpoint CREATE TABLE `observation_backlink` ( `versionId` text PRIMARY KEY NOT NULL ); @@ -131,24 +149,6 @@ CREATE TABLE `preset` ( `forks` text NOT NULL ); --> statement-breakpoint -CREATE TABLE `role_backlink` ( - `versionId` text PRIMARY KEY NOT NULL -); ---> statement-breakpoint -CREATE TABLE `role` ( - `docId` text PRIMARY KEY NOT NULL, - `versionId` text NOT NULL, - `schemaName` text NOT NULL, - `createdAt` text NOT NULL, - `createdBy` text NOT NULL, - `updatedAt` text NOT NULL, - `links` text NOT NULL, - `deleted` integer NOT NULL, - `roleId` text NOT NULL, - `fromIndex` real NOT NULL, - `forks` text NOT NULL -); ---> statement-breakpoint CREATE TABLE `translation_backlink` ( `versionId` text PRIMARY KEY NOT NULL ); diff --git a/drizzle/project/meta/0000_snapshot.json b/drizzle/project/meta/0000_snapshot.json index 7fa05f6f..3a2d96bf 100644 --- a/drizzle/project/meta/0000_snapshot.json +++ b/drizzle/project/meta/0000_snapshot.json @@ -1,7 +1,7 @@ { "version": "5", "dialect": "sqlite", - "id": "f68815a6-4e7a-4ca7-9882-6f31bb34b716", + "id": "aed41a2e-b005-48a3-b3d0-1f02e9defa70", "prevId": "00000000-0000-0000-0000-000000000000", "tables": { "coreOwnership_backlink": { @@ -505,8 +505,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "observation_backlink": { - "name": "observation_backlink", + "membership_backlink": { + "name": "membership_backlink", "columns": { "versionId": { "name": "versionId", @@ -521,8 +521,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "observation": { - "name": "observation", + "membership": { + "name": "membership", "columns": { "docId": { "name": "docId", @@ -580,44 +580,16 @@ "notNull": true, "autoincrement": false }, - "lat": { - "name": "lat", - "type": "real", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "lon": { - "name": "lon", - "type": "real", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "refs": { - "name": "refs", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "attachments": { - "name": "attachments", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "tags": { - "name": "tags", + "roleId": { + "name": "roleId", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, - "metadata": { - "name": "metadata", - "type": "text", + "fromIndex": { + "name": "fromIndex", + "type": "integer", "primaryKey": false, "notNull": true, "autoincrement": false @@ -635,8 +607,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "preset_backlink": { - "name": "preset_backlink", + "observation_backlink": { + "name": "observation_backlink", "columns": { "versionId": { "name": "versionId", @@ -651,8 +623,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "preset": { - "name": "preset", + "observation": { + "name": "observation", "columns": { "docId": { "name": "docId", @@ -710,57 +682,43 @@ "notNull": true, "autoincrement": false }, - "name": { - "name": "name", - "type": "text", - "primaryKey": false, - "notNull": true, - "autoincrement": false - }, - "geometry": { - "name": "geometry", - "type": "text", + "lat": { + "name": "lat", + "type": "real", "primaryKey": false, - "notNull": true, + "notNull": false, "autoincrement": false }, - "tags": { - "name": "tags", - "type": "text", + "lon": { + "name": "lon", + "type": "real", "primaryKey": false, - "notNull": true, + "notNull": false, "autoincrement": false }, - "addTags": { - "name": "addTags", + "refs": { + "name": "refs", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, - "removeTags": { - "name": "removeTags", + "attachments": { + "name": "attachments", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, - "fieldIds": { - "name": "fieldIds", + "tags": { + "name": "tags", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, - "iconId": { - "name": "iconId", - "type": "text", - "primaryKey": false, - "notNull": false, - "autoincrement": false - }, - "terms": { - "name": "terms", + "metadata": { + "name": "metadata", "type": "text", "primaryKey": false, "notNull": true, @@ -779,8 +737,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "role_backlink": { - "name": "role_backlink", + "preset_backlink": { + "name": "preset_backlink", "columns": { "versionId": { "name": "versionId", @@ -795,8 +753,8 @@ "compositePrimaryKeys": {}, "uniqueConstraints": {} }, - "role": { - "name": "role", + "preset": { + "name": "preset", "columns": { "docId": { "name": "docId", @@ -854,16 +812,58 @@ "notNull": true, "autoincrement": false }, - "roleId": { - "name": "roleId", + "name": { + "name": "name", "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false }, - "fromIndex": { - "name": "fromIndex", - "type": "real", + "geometry": { + "name": "geometry", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "tags": { + "name": "tags", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "addTags": { + "name": "addTags", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "removeTags": { + "name": "removeTags", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "fieldIds": { + "name": "fieldIds", + "type": "text", + "primaryKey": false, + "notNull": true, + "autoincrement": false + }, + "iconId": { + "name": "iconId", + "type": "text", + "primaryKey": false, + "notNull": false, + "autoincrement": false + }, + "terms": { + "name": "terms", + "type": "text", "primaryKey": false, "notNull": true, "autoincrement": false diff --git a/drizzle/project/meta/_journal.json b/drizzle/project/meta/_journal.json index 37f6585d..7dbe4690 100644 --- a/drizzle/project/meta/_journal.json +++ b/drizzle/project/meta/_journal.json @@ -5,8 +5,8 @@ { "idx": 0, "version": "5", - "when": 1707965473123, - "tag": "0000_supreme_forgotten_one", + "when": 1712654482206, + "tag": "0000_careless_magus", "breakpoints": true } ] diff --git a/mapeo-schema-3.0.0-next.14.tgz b/mapeo-schema-3.0.0-next.14.tgz new file mode 100644 index 0000000000000000000000000000000000000000..5e9610228e2443554f2b14c7fad9f586338ab118 GIT binary patch literal 97184 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index c7250fd0..6ab1bc85 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "3.0.0-next.14", + "@mapeo/schema": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", @@ -819,8 +819,9 @@ }, "node_modules/@mapeo/schema": { "version": "3.0.0-next.14", - "resolved": "https://registry.npmjs.org/@mapeo/schema/-/schema-3.0.0-next.14.tgz", - "integrity": "sha512-i0AUHbwMxUyggk6SDURxLPXOVCWlLAszSKUYm2fviQXYrGNcUALniw8JBn3x5jzfCFW1xrTUNhIcnt4IuF95mA==", + "resolved": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", + "integrity": "sha512-m1883dVXuSSdGPTNNdF4CoOLYWLhsmszwTvptrI9Ap+QRvZnMB3aQmwHRLMxaZ3KBU5W7jjy2Vt9brUhvsRPow==", + "license": "MIT", "dependencies": { "@json-schema-tools/dereferencer": "^1.6.1", "ajv": "^8.12.0", diff --git a/package.json b/package.json index aea06b48..066d133d 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "3.0.0-next.14", + "@mapeo/schema": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", diff --git a/src/datastore/index.js b/src/datastore/index.js index b8f7e8d3..61f39054 100644 --- a/src/datastore/index.js +++ b/src/datastore/index.js @@ -37,7 +37,7 @@ const NAMESPACE_SCHEMAS = /** @type {const} */ ({ 'deviceInfo', 'icon', ], - auth: ['coreOwnership', 'role'], + auth: ['coreOwnership', 'membership'], }) /** diff --git a/src/mapeo-project.js b/src/mapeo-project.js index d5e3ab68..01fc305b 100644 --- a/src/mapeo-project.js +++ b/src/mapeo-project.js @@ -21,7 +21,7 @@ import { fieldTable, observationTable, presetTable, - roleTable, + membershipTable, iconTable, } from './schema/project.js' import { @@ -152,7 +152,7 @@ export class MapeoProject extends TypedEmitter { presetTable, fieldTable, coreOwnershipTable, - roleTable, + membershipTable, deviceInfoTable, iconTable, ], @@ -220,9 +220,9 @@ export class MapeoProject extends TypedEmitter { table: coreOwnershipTable, db, }), - role: new DataType({ + membership: new DataType({ dataStore: this.#dataStores.auth, - table: roleTable, + table: membershipTable, db, }), deviceInfo: new DataType({ @@ -248,7 +248,7 @@ export class MapeoProject extends TypedEmitter { identityKeypair, }) this.#roles = new Roles({ - dataType: this.#dataTypes.role, + membership: this.#dataTypes.membership, coreOwnership: this.#coreOwnership, coreManager: this.#coreManager, projectKey: projectKey, @@ -559,7 +559,7 @@ export class MapeoProject extends TypedEmitter { async [kProjectLeave]() { // 1. Check that the device can leave the project - const roleDocs = await this.#dataTypes.role.getMany() + const roleDocs = await this.#dataTypes.membership.getMany() // 1.1 Check that we are not blocked in the project const ownRole = roleDocs.find(({ docId }) => this.#deviceId === docId) diff --git a/src/roles.js b/src/roles.js index eda0b224..cd1d4e04 100644 --- a/src/roles.js +++ b/src/roles.js @@ -214,7 +214,7 @@ export const ROLES = { } export class Roles { - #dataType + #membership #coreOwnership #coreManager #projectCreatorAuthCoreId @@ -227,18 +227,24 @@ export class Roles { * @param {object} opts * @param {import('./datatype/index.js').DataType< * import('./datastore/index.js').DataStore<'auth'>, - * typeof import('./schema/project.js').roleTable, - * 'role', - * import('@mapeo/schema').Role, - * import('@mapeo/schema').RoleValue - * >} opts.dataType + * typeof import('./schema/project.js').membershipTable, + * 'membership', + * import('@mapeo/schema').Membership, + * import('@mapeo/schema').MembershipValue + * >} opts.membership * @param {import('./core-ownership.js').CoreOwnership} opts.coreOwnership * @param {import('./core-manager/index.js').CoreManager} opts.coreManager * @param {Buffer} opts.projectKey * @param {Buffer} opts.deviceKey public key of this device */ - constructor({ dataType, coreOwnership, coreManager, projectKey, deviceKey }) { - this.#dataType = dataType + constructor({ + membership, + coreOwnership, + coreManager, + projectKey, + deviceKey, + }) { + this.#membership = membership this.#coreOwnership = coreOwnership this.#coreManager = coreManager this.#projectCreatorAuthCoreId = projectKey.toString('hex') @@ -255,8 +261,8 @@ export class Roles { /** @type {string} */ let roleId try { - const roleAssignment = await this.#dataType.getByDocId(deviceId) - roleId = roleAssignment.roleId + const membership = await this.#membership.getByDocId(deviceId) + roleId = membership.roleId } catch (e) { // The project creator will have the creator role const authCoreId = await this.#coreOwnership.getCoreId(deviceId, 'auth') @@ -283,7 +289,7 @@ export class Roles { * @returns {Promise>} Map of deviceId to Role */ async getAll() { - const roles = await this.#dataType.getMany() + const memberships = await this.#membership.getMany() /** @type {Map} */ const result = new Map() /** @type {undefined | string} */ @@ -300,17 +306,17 @@ export class Roles { // them in the returned map } - for (const role of roles) { - if (!isRoleId(role.roleId)) { + for (const member of memberships) { + if (!isRoleId(member.roleId)) { console.error("Found a value that wasn't a role ID") continue } - if (role.roleId === CREATOR_ROLE_ID) { + if (member.roleId === CREATOR_ROLE_ID) { console.error('Unexpected creator role') continue } - const deviceId = role.docId - result.set(deviceId, ROLES[role.roleId]) + const deviceId = member.docId + result.set(deviceId, ROLES[member.roleId]) } const includesSelf = result.has(this.#ownDeviceId) if (!includesSelf) { @@ -369,22 +375,22 @@ export class Roles { } } - const existingRoleDoc = await this.#dataType + const existingMembershipDoc = await this.#membership .getByDocId(deviceId) .catch(() => null) - if (existingRoleDoc) { - await this.#dataType.update( - [existingRoleDoc.versionId, ...existingRoleDoc.forks], + if (existingMembershipDoc) { + await this.#membership.update( + [existingMembershipDoc.versionId, ...existingMembershipDoc.forks], { - schemaName: 'role', + schemaName: 'membership', roleId, fromIndex, } ) } else { - await this.#dataType[kCreateWithDocId](deviceId, { - schemaName: 'role', + await this.#membership[kCreateWithDocId](deviceId, { + schemaName: 'membership', roleId, fromIndex, }) diff --git a/src/schema/project.js b/src/schema/project.js index 070b2764..6108bb4c 100644 --- a/src/schema/project.js +++ b/src/schema/project.js @@ -20,7 +20,10 @@ export const coreOwnershipTable = sqliteTable( 'coreOwnership', toColumns(schemas.coreOwnership) ) -export const roleTable = sqliteTable('role', toColumns(schemas.role)) +export const membershipTable = sqliteTable( + 'membership', + toColumns(schemas.membership) +) export const deviceInfoTable = sqliteTable( 'deviceInfo', toColumns(schemas.deviceInfo) @@ -32,7 +35,7 @@ export const observationBacklinkTable = backlinkTable(observationTable) export const presetBacklinkTable = backlinkTable(presetTable) export const fieldBacklinkTable = backlinkTable(fieldTable) export const coreOwnershipBacklinkTable = backlinkTable(coreOwnershipTable) -export const roleBacklinkTable = backlinkTable(roleTable) +export const membershipBacklinkTable = backlinkTable(membershipTable) export const deviceInfoBacklinkTable = backlinkTable(deviceInfoTable) export const iconBacklinkTable = backlinkTable(iconTable) diff --git a/test-e2e/members.js b/test-e2e/members.js index caf55f39..655178fa 100644 --- a/test-e2e/members.js +++ b/test-e2e/members.js @@ -363,18 +363,18 @@ test('roles - assignRole()', async (t) => { ) await t.test('invitor updates invitee role to coordinator', async (st) => { - const roleRecordBefore = await invitorProject[kDataTypes].role.getByDocId( - invitee.deviceId - ) + const roleRecordBefore = await invitorProject[ + kDataTypes + ].membership.getByDocId(invitee.deviceId) await invitorProject.$member.assignRole( invitee.deviceId, COORDINATOR_ROLE_ID ) - const roleRecordAfter = await invitorProject[kDataTypes].role.getByDocId( - invitee.deviceId - ) + const roleRecordAfter = await invitorProject[ + kDataTypes + ].membership.getByDocId(invitee.deviceId) t.alike( roleRecordAfter.links, @@ -399,15 +399,15 @@ test('roles - assignRole()', async (t) => { }) await t.test('invitee updates own role to member', async (st) => { - const roleRecordBefore = await inviteeProject[kDataTypes].role.getByDocId( - invitee.deviceId - ) + const roleRecordBefore = await inviteeProject[ + kDataTypes + ].membership.getByDocId(invitee.deviceId) await inviteeProject.$member.assignRole(invitee.deviceId, MEMBER_ROLE_ID) - const roleRecordAfter = await inviteeProject[kDataTypes].role.getByDocId( - invitee.deviceId - ) + const roleRecordAfter = await inviteeProject[ + kDataTypes + ].membership.getByDocId(invitee.deviceId) t.alike( roleRecordAfter.links, @@ -474,9 +474,9 @@ test('roles - assignRole() with forked role', async (t) => { // 3. Verify that invitee2 role is now forked - const invitee2RoleForked = await invitee1Project[kDataTypes].role.getByDocId( - invitee2.deviceId - ) + const invitee2RoleForked = await invitee1Project[ + kDataTypes + ].membership.getByDocId(invitee2.deviceId) t.is(invitee2RoleForked.forks.length, 1, 'invitee2 role has one fork') // 4. Assign role again, which should merge forked records @@ -485,9 +485,9 @@ test('roles - assignRole() with forked role', async (t) => { await waitForSync(projects, 'initial') - const invitee2RoleMerged = await invitee1Project[kDataTypes].role.getByDocId( - invitee2.deviceId - ) + const invitee2RoleMerged = await invitee1Project[ + kDataTypes + ].membership.getByDocId(invitee2.deviceId) t.is(invitee2RoleMerged.forks.length, 0, 'invitee2 role has no forks') await disconnectPeers(managers) From 42d74a24533958761661be56015d09853b34008d Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 9 Apr 2024 13:20:19 +0100 Subject: [PATCH 2/2] fix link to temp schema pkg --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6ab1bc85..798bc092 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", + "@mapeo/schema": "file:mapeo-schema-3.0.0-next.14.tgz", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3", @@ -819,7 +819,7 @@ }, "node_modules/@mapeo/schema": { "version": "3.0.0-next.14", - "resolved": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", + "resolved": "file:mapeo-schema-3.0.0-next.14.tgz", "integrity": "sha512-m1883dVXuSSdGPTNNdF4CoOLYWLhsmszwTvptrI9Ap+QRvZnMB3aQmwHRLMxaZ3KBU5W7jjy2Vt9brUhvsRPow==", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 066d133d..4f467e41 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "@fastify/type-provider-typebox": "^3.3.0", "@hyperswarm/secret-stream": "^6.1.2", "@mapeo/crypto": "1.0.0-alpha.10", - "@mapeo/schema": "file:../mapeo-schema/mapeo-schema-3.0.0-next.14.tgz", + "@mapeo/schema": "file:mapeo-schema-3.0.0-next.14.tgz", "@mapeo/sqlite-indexer": "1.0.0-alpha.8", "@sinclair/typebox": "^0.29.6", "b4a": "^1.6.3",