refactor!: simplify runtime coordination #7
Keep financial ownership, atomic publication and refresh CAS. Failed refresh leaves cookies untouched; logout still clears them. Remove full-history candle prefetch and special metadata retries. Use native Pino request context instead of parallel middleware. BREAKING CHANGE: remove investment stateVersion, queued sync state, and tbank-sync status progress/resources. Consumers must observe resources through sync=observe with the updated frontend contract.
This commit is contained in:
@@ -263,7 +263,7 @@ describe('persistent ledger HTTP and cursor (SQLite)', () => {
|
||||
expect(upstream.getOperationsByCursor).not.toHaveBeenCalled();
|
||||
},
|
||||
);
|
||||
it('keeps status versions stable between observational reads of a moving period', async () => {
|
||||
it('keeps data revisions stable while observational reads expose current coverage', async () => {
|
||||
const observe = () =>
|
||||
request(app.getHttpServer())
|
||||
.get('/api/v1/brokerage-accounts/all/operations?sync=observe&limit=100')
|
||||
@@ -276,7 +276,7 @@ describe('persistent ledger HTTP and cursor (SQLite)', () => {
|
||||
expect(second.meta.coverage?.requested).not.toEqual(
|
||||
first.meta.coverage?.requested,
|
||||
);
|
||||
expect(second.meta.stateVersion).toBe(first.meta.stateVersion);
|
||||
expect(second.meta.dataRevision).toBe(first.meta.dataRevision);
|
||||
await prisma.tbankOperationCoverage.updateMany({
|
||||
data: {
|
||||
to: new Date(Date.now() - 60_000),
|
||||
@@ -285,10 +285,10 @@ describe('persistent ledger HTTP and cursor (SQLite)', () => {
|
||||
});
|
||||
const changed = (await observe().expect(200))
|
||||
.body as BrokerageOperationsResourceDto;
|
||||
expect(changed.meta.stateVersion).not.toBe(second.meta.stateVersion);
|
||||
expect(changed.meta.coverage?.asOf).not.toBe(second.meta.coverage?.asOf);
|
||||
expect(upstream.getOperationsByCursor).not.toHaveBeenCalled();
|
||||
});
|
||||
it('reads shared metadata from SQLite and changes stateVersion without invalidating a row cursor', async () => {
|
||||
it('reads shared metadata from SQLite without invalidating a row cursor', async () => {
|
||||
const before = (await get('limit=1&sync=observe').expect(200))
|
||||
.body as BrokerageOperationsResourceDto;
|
||||
assert(before.data?.nextCursor);
|
||||
@@ -323,7 +323,6 @@ describe('persistent ledger HTTP and cursor (SQLite)', () => {
|
||||
const after = (await get('limit=1&sync=observe').expect(200))
|
||||
.body as BrokerageOperationsResourceDto;
|
||||
expect(after.data?.items[0].logoName).toBe('saved.png');
|
||||
expect(after.meta.stateVersion).not.toBe(before.meta.stateVersion);
|
||||
expect(after.meta.dataRevision).toBe(before.meta.dataRevision);
|
||||
await get(
|
||||
`limit=1&sync=observe&cursor=${encodeURIComponent(before.data.nextCursor)}`,
|
||||
|
||||
Reference in New Issue
Block a user