Add memberships to db

This commit is contained in:
Henrik Hüttemann 2023-05-26 15:20:40 +02:00
parent c9537ab909
commit a93b2c68e0
No known key found for this signature in database
GPG Key ID: 9F7BD10E0A8A111E
2 changed files with 20 additions and 17 deletions

View File

@ -9,13 +9,14 @@ import { whoami } from './synapse'
import 'reflect-metadata' import 'reflect-metadata'
import { DataSource } from 'typeorm' import { DataSource } from 'typeorm'
import { IdMapping } from './entity/IdMapping' import { IdMapping } from './entity/IdMapping'
import { Membership } from './entity/Membership'
log.info('rocketchat2matrix starts.') log.info('rocketchat2matrix starts.')
const AppDataSource = new DataSource({ const AppDataSource = new DataSource({
type: 'sqlite', type: 'sqlite',
database: 'db.sqlite', database: 'db.sqlite',
entities: [IdMapping], entities: [IdMapping, Membership],
synchronize: true, synchronize: true,
logging: false, logging: false,
}) })
@ -63,25 +64,17 @@ function loadRcExport(entity: Entities): Promise<void> {
mapping.matrixId = matrixUser.user_id mapping.matrixId = matrixUser.user_id
mapping.type = 0 mapping.type = 0
AppDataSource.manager.save(mapping) // Save new mapping AppDataSource.manager.save(mapping)
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((rcRoomId: string) => { rcUser.__rooms.forEach(async (rcRoomId: string) => {
const roomIndex = storage.rooms.findIndex( const membership = new Membership()
(e) => e.rcId === rcRoomId membership.rcRoomId = rcRoomId
) membership.rcUserId = rcUser._id
if (roomIndex >= 0) {
storage.rooms[roomIndex].members.push(rcUser._id) await AppDataSource.manager.save(membership)
log.debug(`Membership of ${rcUser.username} in ${rcRoomId} saved`) log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
} else {
storage.rooms.push({
rcId: rcRoomId,
matrixId: '',
members: [],
})
log.debug(`${rcUser.username} membership for ${rcRoomId} created`)
}
}) })
} }

10
src/entity/Membership.ts Normal file
View File

@ -0,0 +1,10 @@
import { Entity, PrimaryColumn } from 'typeorm'
@Entity()
export class Membership {
@PrimaryColumn()
rcRoomId!: string
@PrimaryColumn()
rcUserId!: string
}