Add createMembership function

This commit is contained in:
Henrik Hüttemann 2023-06-12 16:51:56 +02:00
parent f4891fdc83
commit e706451d90
No known key found for this signature in database
GPG Key ID: 9F7BD10E0A8A111E
3 changed files with 33 additions and 11 deletions

View File

@ -3,10 +3,14 @@ dotenv.config()
import lineByLine from 'n-readlines' import lineByLine from 'n-readlines'
import 'reflect-metadata' import 'reflect-metadata'
import { IdMapping } from './entity/IdMapping' import { IdMapping } from './entity/IdMapping'
import { Membership } from './entity/Membership'
import { RcUser, createUser } from './handlers/users' import { RcUser, createUser } from './handlers/users'
import log from './helpers/logger' import log from './helpers/logger'
import { getMapping, initStorage, save } from './helpers/storage' import {
createMembership,
getMapping,
initStorage,
save,
} from './helpers/storage'
import { whoami } from './helpers/synapse' import { whoami } from './helpers/synapse'
import { RcRoom, createRoom } from './handlers/rooms' import { RcRoom, createRoom } from './handlers/rooms'
@ -73,14 +77,12 @@ async function loadRcExport(entity: Entities) {
log.debug('Mapping added:', mapping) log.debug('Mapping added:', mapping)
// Add user to room mapping (specific to users) // Add user to room mapping (specific to users)
rcUser.__rooms.forEach(async (rcRoomId: string) => { Promise.all(
const membership = new Membership() rcUser.__rooms.map(async (rcRoomId: string) => {
membership.rcRoomId = rcRoomId await createMembership(rcRoomId, rcUser._id)
membership.rcUserId = rcUser._id log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
})
await save(membership) )
log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
})
} }
break break
@ -121,7 +123,7 @@ async function main() {
try { try {
await whoami() await whoami()
await initStorage() await initStorage()
// await loadRcExport(Entities.Users) await loadRcExport(Entities.Users)
await loadRcExport(Entities.Rooms) await loadRcExport(Entities.Rooms)
log.info('Done.') log.info('Done.')
} catch (error) { } catch (error) {

View File

@ -1,4 +1,5 @@
import log from '../helpers/logger' import log from '../helpers/logger'
import { createMembership } from '../helpers/storage'
import { axios, getUserSessionOptions } from '../helpers/synapse' import { axios, getUserSessionOptions } from '../helpers/synapse'
import { RcUser } from './users' import { RcUser } from './users'
@ -60,6 +61,17 @@ export function mapRoom(rcRoom: RcRoom): MatrixRoom {
room.is_direct = true room.is_direct = true
room.preset = MatrixRoomPresets.trusted room.preset = MatrixRoomPresets.trusted
room._creatorId = rcRoom.uids?.[0] || '' room._creatorId = rcRoom.uids?.[0] || ''
if (rcRoom.uids) {
Promise.all(
rcRoom.uids.map(async (uid) => {
await createMembership(rcRoom._id, uid)
log.debug(`${uid} membership in direct chat ${rcRoom._id} created`)
})
)
} else {
throw new Error('Found a direct chat without uids. This is unexpected.')
}
break break
case RcRoomTypes.chat: case RcRoomTypes.chat:

View File

@ -28,3 +28,11 @@ export async function save(entity: IdMapping | Membership) {
export async function getAccessToken(id: string) { export async function getAccessToken(id: string) {
return (await getMapping(id, 0))?.accessToken return (await getMapping(id, 0))?.accessToken
} }
export async function createMembership(rcRoomId: string, rcUserId: string) {
const membership = new Membership()
membership.rcRoomId = rcRoomId
membership.rcUserId = rcUserId
await save(membership)
}