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

View File

@ -1,4 +1,5 @@
import log from '../helpers/logger'
import { createMembership } from '../helpers/storage'
import { axios, getUserSessionOptions } from '../helpers/synapse'
import { RcUser } from './users'
@ -60,6 +61,17 @@ export function mapRoom(rcRoom: RcRoom): MatrixRoom {
room.is_direct = true
room.preset = MatrixRoomPresets.trusted
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
case RcRoomTypes.chat:

View File

@ -28,3 +28,11 @@ export async function save(entity: IdMapping | Membership) {
export async function getAccessToken(id: string) {
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)
}