diff --git a/addons/api/addon/generated/models/session-recording.js b/addons/api/addon/generated/models/session-recording.js index f8d3b7930..aca92a8a6 100644 --- a/addons/api/addon/generated/models/session-recording.js +++ b/addons/api/addon/generated/models/session-recording.js @@ -19,16 +19,11 @@ export default class GeneratedSessionRecordingModel extends BaseModel { type; @attr({ - description: 'The user who created the session.', + description: + 'Contains the values of related fields at the time this Session Recording was created', readOnly: true, }) - user; - - @attr({ - description: 'The target the session connected to.', - readOnly: true, - }) - target; + create_time_values; @attr('string', { description: 'The ID of the Session which this Session Recording recorded.', @@ -36,6 +31,13 @@ export default class GeneratedSessionRecordingModel extends BaseModel { }) session_id; + @attr('string', { + description: + 'The ID of the Storage Bucket for the Target of this Session Recording', + readOnly: true, + }) + storage_bucket_id; + @attr('string', { description: 'The total number of bytes uploaded from the client in the Session.', diff --git a/addons/api/addon/models/session-recording.js b/addons/api/addon/models/session-recording.js index f43b85ff4..b0649845e 100644 --- a/addons/api/addon/models/session-recording.js +++ b/addons/api/addon/models/session-recording.js @@ -38,7 +38,10 @@ export default class SessionRecordingModel extends GeneratedSessionRecordingMode * @type {string} */ get targetScopeDisplayName() { - return this.target?.scope?.name || this.target?.scope?.id; + return ( + this.create_time_values?.target?.scope?.name || + this.create_time_values?.target?.scope?.id + ); } /** @@ -46,6 +49,8 @@ export default class SessionRecordingModel extends GeneratedSessionRecordingMode * @type {string} */ get userDisplayName() { - return this.user?.name || this.user?.id; + return ( + this.create_time_values?.user?.name || this.create_time_values?.user?.id + ); } } diff --git a/addons/api/mirage/factories/session-recording.js b/addons/api/mirage/factories/session-recording.js index 717a4da52..e77fbb2fe 100644 --- a/addons/api/mirage/factories/session-recording.js +++ b/addons/api/mirage/factories/session-recording.js @@ -36,9 +36,12 @@ export default factory.extend({ target.id = 'deleted_target'; sessionRecording.update({ - user: user.attrs, - target: target.attrs, sessionId: session.id, + storage_bucket_id: target.storage_bucket_id, + create_time_values: { + user: user.attrs, + target: target.attrs, + }, }); }, }), @@ -52,9 +55,12 @@ export default factory.extend({ ); sessionRecording.update({ - user: user.attrs, - target: target.attrs, sessionId: session.id, + storage_bucket_id: target.storage_bucket_id, + create_time_values: { + user: user.attrs, + target: target.attrs, + }, }); }, }), diff --git a/addons/api/mirage/serializers/session-recording.js b/addons/api/mirage/serializers/session-recording.js index f6be85e59..dcd1672fe 100644 --- a/addons/api/mirage/serializers/session-recording.js +++ b/addons/api/mirage/serializers/session-recording.js @@ -26,18 +26,19 @@ export default ApplicationSerializer.extend({ ); }); } - if (model.user?.scopeId) { - const scope = scopes.find(model.user.scopeId); - json.user.scope = ScopeSerializer.prototype._hashForModel.apply(this, [ - scope, - ]); + const userScopeId = model.create_time_values?.user?.scopeId; + if (userScopeId) { + const scope = scopes.find(userScopeId); + json.create_time_values.user.scope = + ScopeSerializer.prototype._hashForModel.apply(this, [scope]); } - if (model.target?.scopeId) { - const scope = scopes.find(model.target.scopeId); - json.target.scope = ScopeSerializer.prototype._hashForModel.apply(this, [ - scope, - ]); + const targetScopeId = model.create_time_values?.target?.scopeId; + if (targetScopeId) { + const scope = scopes.find(targetScopeId); + json.create_time_values.target.scope = + ScopeSerializer.prototype._hashForModel.apply(this, [scope]); } + delete json.create_time_values?.target?.storage_bucket_id; json.session_id = model.sessionId; return json; diff --git a/addons/api/tests/unit/models/session-recording-test.js b/addons/api/tests/unit/models/session-recording-test.js index fa020322d..c066ed2cc 100644 --- a/addons/api/tests/unit/models/session-recording-test.js +++ b/addons/api/tests/unit/models/session-recording-test.js @@ -84,13 +84,22 @@ module('Unit | Model | session-recording', function (hooks) { const fakeId = 's_123456789'; const modelA = store.createRecord('session-recording', { - target: { - scope: { name: fakeName, id: fakeId }, + create_time_values: { + target: { + scope: { + name: fakeName, + id: fakeId, + }, + }, }, }); const modelB = store.createRecord('session-recording', { - target: { - scope: { id: fakeId }, + create_time_values: { + target: { + scope: { + id: fakeId, + }, + }, }, }); @@ -105,11 +114,20 @@ module('Unit | Model | session-recording', function (hooks) { const fakeUserId = 'userid'; const userModelA = store.createRecord('session-recording', { - user: { name: fakeUserName, id: fakeUserId }, + create_time_values: { + user: { + name: fakeUserName, + id: fakeUserId, + }, + }, }); const userModelB = store.createRecord('session-recording', { - user: { id: fakeUserId }, + create_time_values: { + user: { + id: fakeUserId, + }, + }, }); assert.strictEqual(userModelA.userDisplayName, fakeUserName); diff --git a/ui/admin/app/routes/scopes/scope/session-recordings/session-recording/channels-by-connection.js b/ui/admin/app/routes/scopes/scope/session-recordings/session-recording/channels-by-connection.js index e81eaf31f..c19452b68 100644 --- a/ui/admin/app/routes/scopes/scope/session-recordings/session-recording/channels-by-connection.js +++ b/ui/admin/app/routes/scopes/scope/session-recordings/session-recording/channels-by-connection.js @@ -27,8 +27,8 @@ export default class ScopesScopeSessionRecordingsSessionRecordingChannelsByConne ); try { - if (sessionRecording.target?.storage_bucket_id) { - const { storage_bucket_id } = sessionRecording.target; + if (sessionRecording.storage_bucket_id) { + const { storage_bucket_id } = sessionRecording; storageBucket = await this.store.findRecord( 'storage-bucket', storage_bucket_id diff --git a/ui/admin/app/templates/scopes/scope/session-recordings/index.hbs b/ui/admin/app/templates/scopes/scope/session-recordings/index.hbs index c444b55da..9a65b5707 100644 --- a/ui/admin/app/templates/scopes/scope/session-recordings/index.hbs +++ b/ui/admin/app/templates/scopes/scope/session-recordings/index.hbs @@ -46,7 +46,7 @@ > - {{B.data.target.name}} + {{B.data.create_time_values.target.name}} {{t 'resources.session-recording.related'}} {{! User name }} - {{#if @model.sessionRecording.user}} + {{#if @model.sessionRecording.create_time_values.user}} {{/if}} {{! Target name }} - {{#if @model.sessionRecording.target}} + {{#if @model.sessionRecording.create_time_values.target}} {{#if @model.sessionRecording.target.type}} diff --git a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs index ae78f78f2..364e756fc 100644 --- a/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs +++ b/ui/admin/app/templates/scopes/scope/session-recordings/session-recording/channels-by-connection/index.hbs @@ -150,32 +150,34 @@

{{t 'resources.session-recording.related'}}

{{! User name }} - {{#if @model.sessionRecording.user}} + {{#if @model.sessionRecording.create_time_values.user}} {{/if}} {{! Target name }} - {{#if @model.sessionRecording.target}} + {{#if @model.sessionRecording.create_time_values.target}} - {{#if @model.sessionRecording.target.type}} - + {{#if @model.sessionRecording.create_time_values.target.type}} + {{/if}} {{/if}} diff --git a/ui/admin/tests/acceptance/session-recordings/list-test.js b/ui/admin/tests/acceptance/session-recordings/list-test.js index 30faa21ed..68e6bd06a 100644 --- a/ui/admin/tests/acceptance/session-recordings/list-test.js +++ b/ui/admin/tests/acceptance/session-recordings/list-test.js @@ -38,7 +38,9 @@ module('Acceptance | session recordings | list', function (hooks) { scope: instances.scopes.global, }); instances.sessionRecording = this.server.create('session-recording', { - target: instances.scopes.targetModel.attrs, + create_time_values: { + target: instances.scopes.targetModel.attrs, + }, }); urls.globalScope = `/scopes/global`; urls.sessionRecordings = `${urls.globalScope}/session-recordings`; diff --git a/ui/admin/tests/acceptance/session-recordings/read-test.js b/ui/admin/tests/acceptance/session-recordings/read-test.js index e6b0b9f85..9916a4a71 100644 --- a/ui/admin/tests/acceptance/session-recordings/read-test.js +++ b/ui/admin/tests/acceptance/session-recordings/read-test.js @@ -44,7 +44,9 @@ module('Acceptance | session recordings | read', function (hooks) { }); instances.sessionRecording = this.server.create('session-recording', { scope: instances.scopes.global, - target: instances.target.attrs, + create_time_values: { + target: instances.target.attrs, + }, }); instances.connectionRecording = this.server.create('connection-recording', { session_recording: instances.sessionRecording,