@@ -116,30 +116,22 @@ console.log(
116
116
"Adding Observable Design Pattern on top of Factory and Singleton Database Intance rather than previous instances."
117
117
) ;
118
118
119
- debugger ;
120
119
const RedisObservableDatabaseFromFactory =
121
120
createSingletonObservableDatabase < Person > ( ) ;
122
- // Add observer with a function that receives an instance that we destruture to just the value
123
- // RedisObservableDatabaseFromFactory.instance.onAfterSet(
124
- // ({ existingValue, newValue, createdAt }) => {
125
- // console.log(
126
- // "Observable callback triggered from Observable Database AfterSet event triggered"
127
- // );
128
- // console.table({ createdAt, existingValue, newValue });
129
- // }
130
- // );
131
-
132
- RedisObservableDatabaseFromFactory . instance . onAfterSet ( ( event ) => {
133
- console . log (
134
- "Observable callback triggered from Observable Database AfterSet event triggered"
135
- ) ;
136
- console . table ( {
137
- fromValue : event . existingValue ,
138
- to : event . newValue ,
139
- happenedAt : event . createdAt . toDateString ( ) ,
121
+
122
+ // Add observer with a function that receives an instance of <T> log for visibility; can also destruture to just the value
123
+ const terminateAfterSetSubscription =
124
+ RedisObservableDatabaseFromFactory . instance . onAfterSet ( ( event ) => {
125
+ console . log (
126
+ "Observable callback triggered from Observable Database AfterSet event triggered"
127
+ ) ;
128
+ console . table ( {
129
+ fromValue : event . existingValue ,
130
+ toValue : event . newValue ,
131
+ happenedAt : event . createdAt . toDateString ( ) ,
132
+ } ) ;
133
+ // console.table({ ...event });
140
134
} ) ;
141
- // console.table({ ...event });
142
- } ) ;
143
135
144
136
// Set it initially with no prior value
145
137
RedisObservableDatabaseFromFactory . instance . set ( < Engineer > {
@@ -158,3 +150,42 @@ RedisObservableDatabaseFromFactory.instance.set(<Engineer>{
158
150
role : "director of FSD.V2" ,
159
151
level : 46 ,
160
152
} ) ;
153
+
154
+ // Now terminate subscription and expect that no more events are dispatched for this AfterSet<T> listener
155
+ terminateAfterSetSubscription ( ) ;
156
+ console . log (
157
+ 'AfterSet listener has unsubscribed and will not receive the "V3" updates from Observable Database and has no readily available reference to re-subscribe once termianted.'
158
+ ) ;
159
+ // Set it again to see the prior value
160
+ RedisObservableDatabaseFromFactory . instance . set ( < Engineer > {
161
+ id : karpathy ,
162
+ name : "Andrei Karpathy.V3" ,
163
+ description : "ML/AI Engineer.V3" ,
164
+ role : "director of FSD.V3" ,
165
+ level : 46 ,
166
+ } ) ;
167
+
168
+ console . log ( "\n\r" ) ;
169
+ console . log ( "AfterDelete listener subscribed to track deletes." ) ;
170
+
171
+ const terminateAfterDeleteSubscription =
172
+ RedisObservableDatabaseFromFactory . instance . onAfterDelete ( ( event ) => {
173
+ console . log (
174
+ "Observable AfterDelete event callback triggered from Observable Database "
175
+ ) ;
176
+ console . table ( {
177
+ fromValue : event . existingValue ,
178
+ happenedAt : event . deletedAt . toDateString ( ) ,
179
+ } ) ;
180
+ } ) ;
181
+
182
+ // Delete the last modified record V3 instance of the reord
183
+ RedisObservableDatabaseFromFactory . instance . delete ( karpathy ) ;
184
+
185
+ console . log (
186
+ "Confirming the deleted record is no longer retrievable from Database."
187
+ ) ;
188
+ const goner = RedisObservableDatabaseFromFactory . instance . get ( karpathy ) ;
189
+ console . table ( { goner } ) ;
190
+
191
+ terminateAfterDeleteSubscription ( ) ;
0 commit comments