Skip to content
This repository was archived by the owner on Oct 25, 2023. It is now read-only.

Commit 4645c81

Browse files
authored
restructure all StorageApi methods to have 1 arg (#400)
1 parent 809ed97 commit 4645c81

File tree

14 files changed

+247
-269
lines changed

14 files changed

+247
-269
lines changed

archaeologist/src/background.ts

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ async function requestPageConnections(bookmark?: TNode) {
7070
try {
7171
// Fetch all edges for a given node
7272
const { from_edges: fromEdges, to_edges: toEdges } = await storage.edge.get(
73-
bookmark.nid
73+
{ nid: bookmark.nid }
7474
)
7575
// Gather node IDs of neighbour nodes to reqeust them
7676
const nids = fromEdges
@@ -157,15 +157,15 @@ async function registerAttentionTime(
157157
log.debug('Register Attention Time', tab, totalSecondsEstimation)
158158
let total: TotalUserActivity
159159
try {
160-
total = await storage.activity.external.add(
161-
{ id: origin.id },
162-
{
160+
total = await storage.activity.external.add({
161+
origin: { id: origin.id },
162+
activity: {
163163
attention: {
164164
seconds: deltaSeconds,
165165
timestamp: unixtime.now(),
166166
},
167-
}
168-
)
167+
},
168+
})
169169
} catch (err) {
170170
if (!isAbortError(err)) {
171171
log.exception(err, 'Could not register external activity')
@@ -497,15 +497,18 @@ async function uploadBrowserHistory(mode: BrowserHistoryUploadMode) {
497497
)
498498

499499
const epid = idOfBrowserHistoryOnThisDeviceAsExternalPipeline()
500-
const currentProgress = await storage.external.ingestion.get(epid)
500+
const currentProgress = await storage.external.ingestion.get({ epid })
501501

502502
log.debug('Progress until now:', currentProgress)
503503

504504
const advanceIngestionProgress = lodash.throttle(
505505
mode.mode !== 'untracked'
506506
? async (date: Date) => {
507-
return storage.external.ingestion.advance(epid, {
508-
ingested_until: unixtime.from(date),
507+
return storage.external.ingestion.advance({
508+
epid,
509+
new_progress: {
510+
ingested_until: unixtime.from(date),
511+
},
509512
})
510513
}
511514
: async (_: Date) => {},
@@ -676,8 +679,11 @@ async function uploadSingleHistoryItem(
676679
const resourceVisits: ResourceVisit[] = visits.map((visit) => {
677680
return { timestamp: unixtime.from(new Date(visit.visitTime ?? 0)) }
678681
})
679-
const total = await storage.activity.external.add(origin, {
680-
visit: { visits: resourceVisits, reported_by: epid },
682+
const total = await storage.activity.external.add({
683+
origin,
684+
activity: {
685+
visit: { visits: resourceVisits, reported_by: epid },
686+
},
681687
})
682688
if (!isReadyToBeAutoSaved(total, 0)) {
683689
return

archaeologist/src/storage_api_browser_ext.ts

Lines changed: 53 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -15,18 +15,14 @@
1515

1616
import type {
1717
Ack,
18-
AddUserActivityRequest,
19-
AddUserExternalAssociationRequest,
20-
AdvanceExternalPipelineIngestionProgress,
21-
CreateEdgeArgs,
22-
CreateNodeArgs,
18+
EdgeCreateArgs,
19+
NodeCreateArgs,
2320
Eid,
2421
NewNodeResponse,
2522
Nid,
2623
NodeBatch,
2724
NodeBatchRequestBody,
2825
NodeEdges,
29-
NodePatchRequest,
3026
OriginId,
3127
StorageApi,
3228
TEdge,
@@ -36,6 +32,16 @@ import type {
3632
TotalUserActivity,
3733
UserExternalPipelineId,
3834
UserExternalPipelineIngestionProgress,
35+
NodeGetArgs,
36+
NodeGetByOriginArgs,
37+
NodeUpdateArgs,
38+
EdgeGetArgs,
39+
ActivityExternalAddArgs,
40+
ActivityExternalGetArgs,
41+
ActivityAssociationRecordArgs,
42+
ActivityAssociationGetArgs,
43+
ExternalIngestionAdvanceArgs,
44+
ExternalIngestionGetArgs,
3945
} from 'smuggler-api'
4046
import { INodeIterator, NodeUtil, EdgeUtil, NodeType } from 'smuggler-api'
4147
import { v4 as uuidv4 } from 'uuid'
@@ -265,7 +271,7 @@ function generateEid(): Eid {
265271

266272
async function createNode(
267273
store: YekLavStore,
268-
args: CreateNodeArgs
274+
args: NodeCreateArgs
269275
): Promise<NewNodeResponse> {
270276
// TODO[snikitin@outlook.com] Below keys must become functional somehow.
271277
// const _created_via: NodeCreatedVia | undefined = args.created_via
@@ -349,13 +355,10 @@ async function createNode(
349355
return { nid: node.nid }
350356
}
351357

352-
async function getNode({
353-
store,
354-
nid,
355-
}: {
356-
store: YekLavStore
357-
nid: Nid
358-
}): Promise<TNode> {
358+
async function getNode(
359+
store: YekLavStore,
360+
{ nid }: NodeGetArgs
361+
): Promise<TNode> {
359362
const yek: NidToNodeYek = { yek: { kind: 'nid->node', key: nid } }
360363
const lav: NidToNodeLav | undefined = await store.get(yek)
361364
if (lav == null) {
@@ -365,13 +368,10 @@ async function getNode({
365368
return NodeUtil.fromJson(value)
366369
}
367370

368-
async function getNodesByOrigin({
369-
store,
370-
origin,
371-
}: {
372-
store: YekLavStore
373-
origin: OriginId
374-
}): Promise<TNode[]> {
371+
async function getNodesByOrigin(
372+
store: YekLavStore,
373+
{ origin }: NodeGetByOriginArgs
374+
): Promise<TNode[]> {
375375
const yek: OriginToNidYek = { yek: { kind: 'origin->nid', key: origin } }
376376
const lav: OriginToNidLav | undefined = await store.get(yek)
377377
if (lav == null) {
@@ -387,9 +387,9 @@ async function getNodesByOrigin({
387387

388388
async function getNodeBatch(
389389
store: YekLavStore,
390-
req: NodeBatchRequestBody
390+
args: NodeBatchRequestBody
391391
): Promise<NodeBatch> {
392-
const yeks: NidToNodeYek[] = req.nids.map((nid: Nid): NidToNodeYek => {
392+
const yeks: NidToNodeYek[] = args.nids.map((nid: Nid): NidToNodeYek => {
393393
return { yek: { kind: 'nid->node', key: nid } }
394394
})
395395
const lavs: NidToNodeLav[] = await store.get(yeks)
@@ -400,7 +400,7 @@ async function getNodeBatch(
400400

401401
async function updateNode(
402402
store: YekLavStore,
403-
args: { nid: Nid } & NodePatchRequest
403+
args: NodeUpdateArgs
404404
): Promise<Ack> {
405405
const yek: NidToNodeYek = { yek: { kind: 'nid->node', key: args.nid } }
406406
const lav: NidToNodeLav | undefined = await store.get(yek)
@@ -460,7 +460,7 @@ class Iterator implements INodeIterator {
460460

461461
async function createEdge(
462462
store: YekLavStore,
463-
args: CreateEdgeArgs
463+
args: EdgeCreateArgs
464464
): Promise<TEdge> {
465465
// TODO[snikitin@outlook.com] Evaluate if ownership support is needed
466466
// and implement if yes
@@ -501,7 +501,7 @@ async function createEdge(
501501

502502
async function getNodeAllEdges(
503503
store: YekLavStore,
504-
nid: string
504+
{ nid }: EdgeGetArgs
505505
): Promise<NodeEdges> {
506506
const yek: NidToEdgeYek = { yek: { kind: 'nid->edge', key: nid } }
507507
const lav: NidToEdgeLav | undefined = await store.get(yek)
@@ -521,10 +521,11 @@ async function getNodeAllEdges(
521521

522522
async function addExternalUserActivity(
523523
store: YekLavStore,
524-
origin: OriginId,
525-
activity: AddUserActivityRequest
524+
{ origin, activity }: ActivityExternalAddArgs
526525
): Promise<TotalUserActivity> {
527-
const total: TotalUserActivity = await getExternalUserActivity(store, origin)
526+
const total: TotalUserActivity = await getExternalUserActivity(store, {
527+
origin,
528+
})
528529
if ('visit' in activity) {
529530
if (activity.visit == null) {
530531
return total
@@ -555,7 +556,7 @@ async function addExternalUserActivity(
555556

556557
async function getExternalUserActivity(
557558
store: YekLavStore,
558-
origin: OriginId
559+
{ origin }: ActivityExternalGetArgs
559560
): Promise<TotalUserActivity> {
560561
const yek: OriginToActivityYek = {
561562
yek: { kind: 'origin->activity', key: origin },
@@ -573,7 +574,7 @@ async function getExternalUserActivity(
573574

574575
async function getUserIngestionProgress(
575576
store: YekLavStore,
576-
epid: UserExternalPipelineId
577+
{ epid }: ExternalIngestionGetArgs
577578
): Promise<UserExternalPipelineIngestionProgress> {
578579
const yek: ExtPipelineYek = {
579580
yek: { kind: 'ext-pipe->progress', key: epid },
@@ -594,11 +595,10 @@ async function getUserIngestionProgress(
594595

595596
async function advanceUserIngestionProgress(
596597
store: YekLavStore,
597-
epid: UserExternalPipelineId,
598-
new_progress: AdvanceExternalPipelineIngestionProgress
598+
{ epid, new_progress }: ExternalIngestionAdvanceArgs
599599
): Promise<Ack> {
600600
const progress: UserExternalPipelineIngestionProgress =
601-
await getUserIngestionProgress(store, epid)
601+
await getUserIngestionProgress(store, { epid })
602602
progress.ingested_until = new_progress.ingested_until
603603

604604
const yek: ExtPipelineYek = {
@@ -627,22 +627,15 @@ export function makeBrowserExtStorageApi(
627627

628628
return {
629629
node: {
630-
get: ({ nid }: { nid: string; signal?: AbortSignal }) =>
631-
getNode({ store, nid }),
632-
getByOrigin: ({ origin }: { origin: OriginId; signal?: AbortSignal }) =>
633-
getNodesByOrigin({ store, origin }),
634-
update: (
635-
args: { nid: string } & NodePatchRequest,
636-
_signal?: AbortSignal
637-
) => updateNode(store, args),
638-
create: (args: CreateNodeArgs, _signal?: AbortSignal) =>
639-
createNode(store, args),
630+
get: (args: NodeGetArgs) => getNode(store, args),
631+
getByOrigin: (args: NodeGetByOriginArgs) => getNodesByOrigin(store, args),
632+
update: (args: NodeUpdateArgs) => updateNode(store, args),
633+
create: (args: NodeCreateArgs) => createNode(store, args),
640634
iterate: () => new Iterator(store),
641635
delete: throwUnimplementedError('node.delete'),
642636
bulkDelete: throwUnimplementedError('node.bulkdDelete'),
643637
batch: {
644-
get: (req: NodeBatchRequestBody, _signal?: AbortSignal) =>
645-
getNodeBatch(store, req),
638+
get: (args: NodeBatchRequestBody) => getNodeBatch(store, args),
646639
},
647640
url: throwUnimplementedError('node.url'),
648641
},
@@ -663,48 +656,32 @@ export function makeBrowserExtStorageApi(
663656
},
664657
},
665658
edge: {
666-
create: (args: CreateEdgeArgs) => createEdge(store, args),
667-
get: (nid: string, _signal?: AbortSignal) => getNodeAllEdges(store, nid),
659+
create: (args: EdgeCreateArgs) => createEdge(store, args),
660+
get: (args: EdgeGetArgs) => getNodeAllEdges(store, args),
668661
sticky: throwUnimplementedError('edge.sticky'),
669662
delete: throwUnimplementedError('edge.delete'),
670663
},
671664
activity: {
672665
external: {
673-
add: (
674-
origin: OriginId,
675-
activity: AddUserActivityRequest,
676-
_signal?: AbortSignal
677-
) => addExternalUserActivity(store, origin, activity),
678-
get: (origin: OriginId, _signal?: AbortSignal) =>
679-
getExternalUserActivity(store, origin),
666+
add: (args: ActivityExternalAddArgs) =>
667+
addExternalUserActivity(store, args),
668+
get: (args: ActivityExternalGetArgs) =>
669+
getExternalUserActivity(store, args),
680670
},
681671
association: {
682672
// TODO[snikitin@outlook.com] Replace stubs with real implementation
683-
record: (
684-
_origin: {
685-
from: OriginId
686-
to: OriginId
687-
},
688-
_body: AddUserExternalAssociationRequest,
689-
_signal?: AbortSignal
690-
) => Promise.resolve({ ack: true }),
691-
get: (
692-
_args: {
693-
origin: OriginId
694-
},
695-
_signal?: AbortSignal
696-
) => Promise.resolve({ from: [], to: [] }),
673+
record: (_args: ActivityAssociationRecordArgs) =>
674+
Promise.resolve({ ack: true }),
675+
get: (_args: ActivityAssociationGetArgs) =>
676+
Promise.resolve({ from: [], to: [] }),
697677
},
698678
},
699679
external: {
700680
ingestion: {
701-
get: (epid: UserExternalPipelineId, _signal?: AbortSignal) =>
702-
getUserIngestionProgress(store, epid),
703-
advance: (
704-
epid: UserExternalPipelineId,
705-
new_progress: AdvanceExternalPipelineIngestionProgress,
706-
_signal?: AbortSignal
707-
) => advanceUserIngestionProgress(store, epid, new_progress),
681+
get: (args: ExternalIngestionGetArgs) =>
682+
getUserIngestionProgress(store, args),
683+
advance: (args: ExternalIngestionAdvanceArgs) =>
684+
advanceUserIngestionProgress(store, args),
708685
},
709686
},
710687
}

archaeologist/src/web-navigation/webNavigation.ts

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,34 +60,34 @@ async function reportAssociation(
6060
): Promise<void> {
6161
const { id: fromId, stableUrl: fromUrl } = genOriginId(fromUrlUnstable)
6262
const { id: toId, stableUrl: toUrl } = genOriginId(toUrlUnstable)
63-
await storage.activity.association.record(
64-
{
63+
await storage.activity.association.record({
64+
origin: {
6565
from: { id: fromId },
6666
to: { id: toId },
6767
},
68-
{
68+
body: {
6969
association: {
7070
web_transition: {
7171
from_url: fromUrl,
7272
to_url: toUrl,
7373
},
7474
},
75-
}
76-
)
75+
},
76+
})
7777
}
7878

7979
async function reportVisit(
8080
storage: StorageApi,
8181
origin: OriginIdentity
8282
): Promise<void> {
83-
await storage.activity.external.add(
84-
{ id: origin.id },
85-
{
83+
await storage.activity.external.add({
84+
origin: { id: origin.id },
85+
activity: {
8686
visit: {
8787
visits: [{ timestamp: unixtime.now() }],
8888
},
89-
}
90-
)
89+
},
90+
})
9191
}
9292

9393
const onCompletedListener = async (

elementary/src/NodeCard.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,12 @@ export function NodeCardFetching({
5252
const fetchNodeAbortController = new AbortController()
5353
useAsyncEffect(
5454
async (isMounted) => {
55-
const n = await storage.node.get({
56-
nid,
57-
signal: fetchNodeAbortController.signal,
58-
})
55+
const n = await storage.node.get(
56+
{
57+
nid,
58+
},
59+
fetchNodeAbortController.signal
60+
)
5961
if (isMounted()) {
6062
setNode(n)
6163
}

0 commit comments

Comments
 (0)