Make power migration testable
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
// @ts-check
|
||||
|
||||
const {db, from} = require("../passthrough")
|
||||
const api = require("./api")
|
||||
const reg = require("./read-registration")
|
||||
const ks = require("./kstate")
|
||||
const {applyKStateDiffToRoom, roomToKState} = require("../d2m/actions/create-room")
|
||||
@@ -11,13 +10,16 @@ for (const mxid of reg.ooye.invite) {
|
||||
db.prepare("INSERT OR IGNORE INTO member_power (mxid, room_id, power_level) VALUES (?, ?, 100)").run(mxid, "*")
|
||||
}
|
||||
|
||||
// Apply global power level requests across ALL rooms where the member cache entry exists but the power level has not been applied yet.
|
||||
const rows = from("member_cache").join("member_power", "mxid")
|
||||
.and("where member_power.room_id = '*' and member_cache.power_level != member_power.power_level")
|
||||
.selectUnsafe("mxid", "member_cache.room_id", "member_power.power_level")
|
||||
.all()
|
||||
/** Apply global power level requests across ALL rooms where the member cache entry exists but the power level has not been applied yet. */
|
||||
function _getAffectedRooms() {
|
||||
return from("member_cache").join("member_power", "mxid")
|
||||
.and("where member_power.room_id = '*' and member_cache.power_level != member_power.power_level")
|
||||
.selectUnsafe("mxid", "member_cache.room_id", "member_power.power_level")
|
||||
.all()
|
||||
}
|
||||
|
||||
;(async () => {
|
||||
async function applyPower() {
|
||||
const rows = _getAffectedRooms()
|
||||
for (const row of rows) {
|
||||
const kstate = await roomToKState(row.room_id)
|
||||
const diff = ks.diffKState(kstate, {"m.room.power_levels/": {users: {[row.mxid]: row.power_level}}})
|
||||
@@ -26,4 +28,7 @@ const rows = from("member_cache").join("member_power", "mxid")
|
||||
// but we update it here anyway since the homeserver does not always deliver the event round-trip.
|
||||
db.prepare("UPDATE member_cache SET power_level = ? WHERE room_id = ? AND mxid = ?").run(row.power_level, row.room_id, row.mxid)
|
||||
}
|
||||
})()
|
||||
}
|
||||
|
||||
module.exports._getAffectedRooms = _getAffectedRooms
|
||||
module.exports.applyPower = applyPower
|
||||
|
Reference in New Issue
Block a user