Skip to content

Commit b8c2709

Browse files
committed
feat(EAV-487): add buckets topic to LSG
currently only featuring adLibs and actions valid for all variants (showStyleVariantId === null)
1 parent 3252531 commit b8c2709

File tree

26 files changed

+419
-45
lines changed

26 files changed

+419
-45
lines changed

meteor/server/api/buckets.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import * as _ from 'underscore'
22
import { Meteor } from 'meteor/meteor'
3-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
3+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
44
import { getRandomId, getRandomString, literal } from '../lib/tempLib'
55
import { BucketAdLib } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibPiece'
66
import { AdLibAction, AdLibActionCommon } from '@sofie-automation/corelib/dist/dataModel/AdlibAction'

meteor/server/api/rest/v1/typeConversion.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ import {
5252
DEFAULT_MINIMUM_TAKE_SPAN,
5353
DEFAULT_FALLBACK_PART_DURATION,
5454
} from '@sofie-automation/shared-lib/dist/core/constants'
55-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
55+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
5656
import { ForceQuickLoopAutoNext } from '@sofie-automation/shared-lib/dist/core/model/StudioSettings'
5757

5858
/*

meteor/server/api/userActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { MOSDeviceActions } from './ingest/mosDevice/actions'
1515
import { MethodContextAPI } from './methodContext'
1616
import { ServerClientAPI } from './client'
1717
import { triggerWriteAccessBecauseNoCheckNecessary } from '../security/securityVerify'
18-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
18+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
1919
import { BucketsAPI } from './buckets'
2020
import { BucketAdLib } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibPiece'
2121
import { AdLibActionCommon } from '@sofie-automation/corelib/dist/dataModel/AdlibAction'

meteor/server/collections/bucket.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { BucketAdLibAction } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibAction'
22
import { BucketAdLib } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibPiece'
33
import { CollectionName } from '@sofie-automation/corelib/dist/dataModel/Collections'
4-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
4+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
55
import { createAsyncOnlyMongoCollection } from './collection'
66
import { registerIndex } from './indices'
77

meteor/server/publications/buckets.ts

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,14 @@
11
import { FindOptions } from '@sofie-automation/meteor-lib/dist/collections/lib'
22
import { meteorPublish } from './lib/lib'
3-
import { MeteorPubSub } from '@sofie-automation/meteor-lib/dist/api/pubsub'
4-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
3+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
54
import { BucketAdLibActions, BucketAdLibs, Buckets } from '../collections'
65
import { check, Match } from 'meteor/check'
76
import { StudioId, BucketId, ShowStyleVariantId } from '@sofie-automation/corelib/dist/dataModel/Ids'
87
import { CorelibPubSub } from '@sofie-automation/corelib/dist/pubsub'
98
import { triggerWriteAccessBecauseNoCheckNecessary } from '../security/securityVerify'
109

1110
meteorPublish(
12-
MeteorPubSub.buckets,
11+
CorelibPubSub.buckets,
1312
async function (studioId: StudioId, bucketId: BucketId | null, _token: string | undefined) {
1413
check(studioId, String)
1514
check(bucketId, Match.Maybe(String))
@@ -21,32 +20,28 @@ meteorPublish(
2120
}
2221

2322
return Buckets.findWithCursor(
24-
bucketId
25-
? {
26-
_id: bucketId,
27-
studioId,
28-
}
29-
: {
30-
studioId,
31-
},
23+
{
24+
_id: bucketId ?? undefined,
25+
studioId,
26+
},
3227
modifier
3328
)
3429
}
3530
)
3631

3732
meteorPublish(
3833
CorelibPubSub.bucketAdLibPieces,
39-
async function (studioId: StudioId, bucketId: BucketId, showStyleVariantIds: ShowStyleVariantId[]) {
34+
async function (studioId: StudioId, bucketId: BucketId | null, showStyleVariantIds: ShowStyleVariantId[]) {
4035
check(studioId, String)
41-
check(bucketId, String)
36+
check(bucketId, Match.Maybe(String))
4237
check(showStyleVariantIds, Array)
4338

4439
triggerWriteAccessBecauseNoCheckNecessary()
4540

4641
return BucketAdLibs.findWithCursor(
4742
{
4843
studioId: studioId,
49-
bucketId: bucketId,
44+
bucketId: bucketId ?? undefined,
5045
showStyleVariantId: {
5146
$in: [null, ...showStyleVariantIds], // null = valid for all variants
5247
},
@@ -62,7 +57,7 @@ meteorPublish(
6257

6358
meteorPublish(
6459
CorelibPubSub.bucketAdLibActions,
65-
async function (studioId: StudioId, bucketId: BucketId, showStyleVariantIds: ShowStyleVariantId[]) {
60+
async function (studioId: StudioId, bucketId: BucketId | null, showStyleVariantIds: ShowStyleVariantId[]) {
6661
check(studioId, String)
6762
check(bucketId, String)
6863
check(showStyleVariantIds, Array)

meteor/server/publications/pieceContentStatusUI/bucket/publication.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import {
2121
SetupObserversResult,
2222
} from '../../../lib/customPublication'
2323
import { BucketContentCache, createReactiveContentCache } from './bucketContentCache'
24-
import { Bucket } from '@sofie-automation/meteor-lib/dist/collections/Buckets'
24+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
2525
import {
2626
addItemsWithDependenciesChangesToChangedSet,
2727
fetchStudio,

packages/meteor-lib/src/collections/Buckets.ts renamed to packages/corelib/src/dataModel/Bucket.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { BucketId, StudioId } from '@sofie-automation/corelib/dist/dataModel/Ids'
1+
import { BucketId, StudioId } from './Ids'
22

33
/**
44
* A Bucket is an container for AdLib pieces that do not come from a MOS gateway and are

packages/corelib/src/pubsub.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import {
3737
} from '@sofie-automation/shared-lib/dist/core/model/Ids'
3838
import { BlueprintId, BucketId, RundownPlaylistActivationId, SegmentId, ShowStyleVariantId } from './dataModel/Ids'
3939
import { PackageInfoDB } from './dataModel/PackageInfos'
40+
import { Bucket } from './dataModel/Bucket'
4041

4142
/**
4243
* Ids of possible DDP subscriptions for any the UI and gateways accessing the Rundown & RundownPlaylist model.
@@ -135,12 +136,16 @@ export enum CorelibPubSub {
135136
packageContainerStatuses = 'packageContainerStatuses',
136137

137138
/**
138-
* Fetch all bucket adlib pieces for the specified Studio and Bucket.
139+
* Fetch either all buckets for the given Studio, or the Bucket specified.
140+
*/
141+
buckets = 'buckets',
142+
/**
143+
* Fetch all bucket adlib pieces for the specified Studio and Bucket (or all buckets in a Studio).
139144
* The result will be limited to ones valid to the ShowStyleVariants specified, as well as ones marked as valid in any ShowStyleVariant
140145
*/
141146
bucketAdLibPieces = 'bucketAdLibPieces',
142147
/**
143-
* Fetch all bucket adlib action for the specified Studio and Bucket.
148+
* Fetch all bucket adlib action for the specified Studio and Bucket (or all buckets in a Studio).
144149
* The result will be limited to ones valid to the ShowStyleVariants specified, as well as ones marked as valid in any ShowStyleVariant
145150
*/
146151
bucketAdLibActions = 'bucketAdLibActions',
@@ -297,14 +302,15 @@ export interface CorelibPubSubTypes {
297302
token?: string
298303
) => CollectionName.Studios
299304
[CorelibPubSub.timelineDatastore]: (studioId: StudioId, token?: string) => CollectionName.TimelineDatastore
305+
[CorelibPubSub.buckets]: (studioId: StudioId, bucketId: BucketId | null, token?: string) => CollectionName.Buckets
300306
[CorelibPubSub.bucketAdLibPieces]: (
301307
studioId: StudioId,
302-
bucketId: BucketId,
308+
bucketId: BucketId | null,
303309
showStyleVariantIds: ShowStyleVariantId[]
304310
) => CollectionName.BucketAdLibPieces
305311
[CorelibPubSub.bucketAdLibActions]: (
306312
studioId: StudioId,
307-
bucketId: BucketId,
313+
bucketId: BucketId | null,
308314
showStyleVariantIds: ShowStyleVariantId[]
309315
) => CollectionName.BucketAdLibActions
310316
[CorelibPubSub.expectedPackages]: (studioIds: StudioId[], token?: string) => CollectionName.ExpectedPackages
@@ -323,6 +329,7 @@ export type CorelibPubSubCollections = {
323329
[CollectionName.AdLibActions]: AdLibAction
324330
[CollectionName.AdLibPieces]: AdLibPiece
325331
[CollectionName.Blueprints]: Blueprint
332+
[CollectionName.Buckets]: Bucket
326333
[CollectionName.BucketAdLibActions]: BucketAdLibAction
327334
[CollectionName.BucketAdLibPieces]: BucketAdLib
328335
[CollectionName.ExpectedMediaItems]: ExpectedMediaItem

packages/documentation/docs/for-developers/data-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Currently, there is not a very clearly defined flow for modifying these document
2424
This includes:
2525

2626
- [Blueprints](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/Blueprint.ts)
27-
- [Buckets](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/Buckets.ts)
27+
- [Buckets](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/Bucket.ts)
2828
- [CoreSystem](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/CoreSystem.ts)
2929
- [Evaluations](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/Evaluations.ts)
3030
- [ExternalMessageQueue](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/ExternalMessageQueue.ts)

packages/documentation/versioned_docs/version-1.50.0/for-developers/data-model.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Currently, there is not a very clearly defined flow for modifying these document
2424
This includes:
2525

2626
- [Blueprints](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/Blueprint.ts)
27-
- [Buckets](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/Buckets.ts)
27+
- [Buckets](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/Bucket.ts)
2828
- [CoreSystem](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/CoreSystem.ts)
2929
- [Evaluations](https://github.com/nrkno/sofie-core/blob/master/meteor/lib/collections/Evaluations.ts)
3030
- [ExternalMessageQueue](https://github.com/nrkno/sofie-core/blob/master/packages/corelib/src/dataModel/ExternalMessageQueue.ts)
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
import { Logger } from 'winston'
2+
import { CoreHandler } from '../coreHandler'
3+
import { Collection, PublicationCollection } from '../wsHandler'
4+
import { CollectionName } from '@sofie-automation/corelib/dist/dataModel/Collections'
5+
import { BucketAdLibAction } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibAction'
6+
import { CorelibPubSub } from '@sofie-automation/corelib/dist/pubsub'
7+
import { CollectionHandlers } from '../liveStatusServer'
8+
9+
export class BucketAdLibActionsHandler
10+
extends PublicationCollection<
11+
BucketAdLibAction[],
12+
CorelibPubSub.bucketAdLibActions,
13+
CollectionName.BucketAdLibActions
14+
>
15+
implements Collection<BucketAdLibAction[]>
16+
{
17+
constructor(logger: Logger, coreHandler: CoreHandler) {
18+
super(CollectionName.BucketAdLibActions, CorelibPubSub.bucketAdLibActions, logger, coreHandler)
19+
}
20+
21+
changed(): void {
22+
const collection = this.getCollectionOrFail()
23+
this._collectionData = collection.find(undefined)
24+
this.notify(this._collectionData)
25+
}
26+
27+
init(handlers: CollectionHandlers): void {
28+
super.init(handlers)
29+
this.setupSubscription(this._studioId, null, []) // This only matches adLibs avilable to all variants
30+
}
31+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Logger } from 'winston'
2+
import { CoreHandler } from '../coreHandler'
3+
import { Collection, PublicationCollection } from '../wsHandler'
4+
import { CollectionName } from '@sofie-automation/corelib/dist/dataModel/Collections'
5+
import { BucketAdLib } from '@sofie-automation/corelib/dist/dataModel/BucketAdLibPiece'
6+
import { CorelibPubSub } from '@sofie-automation/corelib/dist/pubsub'
7+
import { CollectionHandlers } from '../liveStatusServer'
8+
9+
export class BucketAdLibsHandler
10+
extends PublicationCollection<BucketAdLib[], CorelibPubSub.bucketAdLibPieces, CollectionName.BucketAdLibPieces>
11+
implements Collection<BucketAdLib[]>
12+
{
13+
constructor(logger: Logger, coreHandler: CoreHandler) {
14+
super(CollectionName.BucketAdLibPieces, CorelibPubSub.bucketAdLibPieces, logger, coreHandler)
15+
}
16+
17+
changed(): void {
18+
const collection = this.getCollectionOrFail()
19+
this._collectionData = collection.find(undefined)
20+
this.notify(this._collectionData)
21+
}
22+
23+
init(handlers: CollectionHandlers): void {
24+
super.init(handlers)
25+
this.setupSubscription(this._studioId, null, []) // This only matches adLibs avilable to all variants
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import { Logger } from 'winston'
2+
import { CoreHandler } from '../coreHandler'
3+
import { Collection, PublicationCollection } from '../wsHandler'
4+
import { CollectionName } from '@sofie-automation/corelib/dist/dataModel/Collections'
5+
import { Bucket } from '@sofie-automation/corelib/dist/dataModel/Bucket'
6+
import { CorelibPubSub } from '@sofie-automation/corelib/dist/pubsub'
7+
import { CollectionHandlers } from '../liveStatusServer'
8+
9+
export class BucketsHandler
10+
extends PublicationCollection<Bucket[], CorelibPubSub.buckets, CollectionName.Buckets>
11+
implements Collection<Bucket[]>
12+
{
13+
constructor(logger: Logger, coreHandler: CoreHandler) {
14+
super(CollectionName.Buckets, CorelibPubSub.buckets, logger, coreHandler)
15+
}
16+
17+
changed(): void {
18+
const collection = this.getCollectionOrFail()
19+
this._collectionData = collection.find(undefined)
20+
this.notify(this._collectionData)
21+
}
22+
23+
init(handlers: CollectionHandlers): void {
24+
super.init(handlers)
25+
this.setupSubscription(this._studioId, null)
26+
}
27+
}

packages/live-status-gateway/src/liveStatusServer.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ import { PartsHandler } from './collections/partsHandler'
2323
import { PieceInstancesHandler } from './collections/pieceInstancesHandler'
2424
import { AdLibsTopic } from './topics/adLibsTopic'
2525
import { ActivePiecesTopic } from './topics/activePiecesTopic'
26+
import { BucketsHandler } from './collections/bucketsHandler'
27+
import { BucketAdLibsHandler } from './collections/bucketAdLibsHandler'
28+
import { BucketAdLibActionsHandler } from './collections/bucketAdLibActionsHandler'
2629

2730
export interface CollectionHandlers {
2831
studioHandler: StudioHandler
@@ -40,6 +43,9 @@ export interface CollectionHandlers {
4043
adLibsHandler: AdLibsHandler
4144
globalAdLibActionsHandler: GlobalAdLibActionsHandler
4245
globalAdLibsHandler: GlobalAdLibsHandler
46+
bucketsHandler: BucketsHandler
47+
bucketAdLibsHandler: BucketAdLibsHandler
48+
bucketAdLibActionsHandler: BucketAdLibActionsHandler
4349
}
4450

4551
export class LiveStatusServer {
@@ -72,6 +78,9 @@ export class LiveStatusServer {
7278
const adLibsHandler = new AdLibsHandler(this._logger, this._coreHandler)
7379
const globalAdLibActionsHandler = new GlobalAdLibActionsHandler(this._logger, this._coreHandler)
7480
const globalAdLibsHandler = new GlobalAdLibsHandler(this._logger, this._coreHandler)
81+
const bucketsHandler = new BucketsHandler(this._logger, this._coreHandler)
82+
const bucketAdLibsHandler = new BucketAdLibsHandler(this._logger, this._coreHandler)
83+
const bucketAdLibActionsHandler = new BucketAdLibActionsHandler(this._logger, this._coreHandler)
7584

7685
const handlers: CollectionHandlers = {
7786
studioHandler,
@@ -89,6 +98,9 @@ export class LiveStatusServer {
8998
adLibsHandler,
9099
globalAdLibActionsHandler,
91100
globalAdLibsHandler,
101+
bucketsHandler,
102+
bucketAdLibsHandler,
103+
bucketAdLibActionsHandler,
92104
}
93105

94106
for (const handlerName in handlers) {

0 commit comments

Comments
 (0)