@@ -3,7 +3,7 @@ import { check } from '../../lib/check'
33import { registerClassToMeteorMethods } from '../../methods'
44import { NewStudiosAPI , StudiosAPIMethods } from '@sofie-automation/meteor-lib/dist/api/studios'
55import { DBStudio } from '@sofie-automation/corelib/dist/dataModel/Studio'
6- import { literal , getRandomId } from '../../lib/tempLib'
6+ import { literal , getRandomId , protectString } from '../../lib/tempLib'
77import { lazyIgnore } from '../../lib/lib'
88import { stringifyError } from '@sofie-automation/shared-lib/dist/lib/stringifyError'
99import {
@@ -22,11 +22,12 @@ import {
2222} from '../../collections'
2323import { MethodContextAPI , MethodContext } from '../methodContext'
2424import { wrapDefaultObject } from '@sofie-automation/corelib/dist/settings/objectWithOverrides'
25- import { OrganizationId , StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
25+ import { OrganizationId , PeripheralDeviceId , StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
2626import { logger } from '../../logging'
2727import { DEFAULT_MINIMUM_TAKE_SPAN } from '@sofie-automation/shared-lib/dist/core/constants'
2828import { UserPermissions } from '@sofie-automation/meteor-lib/dist/userPermissions'
2929import { assertConnectionHasOneOfPermissions } from '../../security/auth'
30+ import { triggerWriteAccessBecauseNoCheckNecessary } from '../../security/lib/securityVerify'
3031
3132const PERMISSIONS_FOR_MANAGE_STUDIOS : Array < keyof UserPermissions > = [ 'configure' ]
3233
@@ -119,6 +120,40 @@ class ServerStudiosAPI extends MethodContextAPI implements NewStudiosAPI {
119120 async removeStudio ( studioId : StudioId ) {
120121 return removeStudio ( this , studioId )
121122 }
123+
124+ async assignConfigToPeripheralDevice ( studioId : StudioId , configId : string , deviceId : PeripheralDeviceId | null ) {
125+ triggerWriteAccessBecauseNoCheckNecessary ( )
126+
127+ // Unassign other uses
128+ await PeripheralDevices . updateAsync (
129+ {
130+ studioId : studioId ,
131+ configId : configId ,
132+ _id : { $ne : deviceId ?? protectString ( '' ) } ,
133+ } ,
134+ {
135+ $unset : {
136+ // nocommit check this
137+ studioId : 1 ,
138+ configId : 1 ,
139+ } ,
140+ } ,
141+ {
142+ multi : true ,
143+ }
144+ )
145+
146+ if ( deviceId ) {
147+ // Set for the new one
148+ await PeripheralDevices . updateAsync ( deviceId , {
149+ $set : {
150+ // nocommit check this
151+ studioId : studioId ,
152+ configId : configId ,
153+ } ,
154+ } )
155+ }
156+ }
122157}
123158registerClassToMeteorMethods ( StudiosAPIMethods , ServerStudiosAPI , false )
124159
0 commit comments