Skip to content
This repository was archived by the owner on Sep 22, 2024. It is now read-only.

Commit 909a6fa

Browse files
committed
refactor(services): removes save utility in favor of using netzo.api.<method>() instead
1 parent 1ada5cf commit 909a6fa

File tree

6 files changed

+15
-34
lines changed

6 files changed

+15
-34
lines changed

Diff for: mod.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {
44
http,
55
// sse,
66
// websocket,
7-
// kv,
7+
kv,
88
} from "./src/mod.ts";
99

1010
/**
@@ -38,5 +38,6 @@ export const Netzo = (options: NetzoOptions) => {
3838
getApiKey: () => apiKey,
3939
services: createServices(api),
4040
http,
41+
kv,
4142
}
4243
};

Diff for: src/kv/mod.test.ts

+6-9
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,14 @@ Deno.test("netzo.kv", () => {
2323
assertExists(netzo.kv)
2424
})
2525

26-
Deno.test("kv", () => {
26+
Deno.test("kv", async () => {
2727
assertExists(kv)
2828

29-
// let receiver = new Proxy({}, receiverHandler)
30-
// let provider = new Proxy({}, providerHandler)
29+
kv.local.prop = await kv.remote.prop // await it here
30+
console.log(await kv.local.prop)
3131

32-
// receiver.prop = await provider.prop // await it here
33-
// console.log(await receiver.prop)
32+
kv.local.another = kv.remote.another // direct assign here, no await
33+
console.log(await kv.local.another)
3434

35-
// receiver.another = provider.another // direct assign here, no await
36-
// console.log(await receiver.another)
37-
38-
// await provider.set("value") // store someting remotely. up to you to decide await or not
35+
kv.remote.foo = "bar" // store someting remotely. up to you to decide await or not
3936
})

Diff for: src/kv/mod.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const providerHandler: ProxyHandler<any> = {
2828
get: async (_target, _name) => {
2929
console.log('load someting from remote...')
3030
return await new Promise((res, rej) => {
31-
setTimeout(() => res(42), 4200)
31+
setTimeout(() => res("Hello world"), 1000)
3232
})
3333
},
3434
set: (_obj, _prop, _value) => {

Diff for: src/services/mod.test.ts

-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ Deno.test("service", () => {
1515
assertExists(service.client)
1616
assertExists(service.requests)
1717
assertExists(service.item)
18-
assertExists(service.save)
1918
})
2019

2120
Deno.test("service.client.todos.get()", async () => {

Diff for: src/services/mod.ts

+6-20
Original file line numberDiff line numberDiff line change
@@ -20,20 +20,8 @@ const getClient = (item: ItemService): Client => {
2020
}
2121
}
2222

23-
const createServiceRequests = ({ api, _id, item, save }: any) => {
23+
const createServiceRequests = ({ api, _id, item }: any) => {
2424
return (requestItem: ItemServiceRequest, index: number) => {
25-
const saveRequest = async (data: ItemServiceRequest) => {
26-
const requests: ItemServiceRequest[] = [
27-
...item.requests.slice(0, index),
28-
data,
29-
...item.requests.slice(index + 1)
30-
]
31-
const newItem = await save({ requests })
32-
for (const [key, value] of Object.entries(newItem)) {
33-
item[key] = value // mutate local object to update with changes
34-
}
35-
return requestItem
36-
}
3725
// TODO: reuse existing client (of service) if possible
3826
// or at least $fetch/useFetch/unfetch client which supports
3927
// entire service request options (for example hooks, etc.)
@@ -52,11 +40,11 @@ const createServiceRequests = ({ api, _id, item, save }: any) => {
5240
const proxy = new Proxy((() => { }), {
5341
/** Select existing by name: "service.requests('getAllTodos')" */
5442
get: (_target, _id): ServiceRequest => {
55-
return { invoke: createInvoke(item), item, save: saveRequest }
43+
return { invoke: createInvoke(item), item }
5644
},
5745
/** Creating a new service by passing in options */
5846
apply: (_target, _thisArg, args): ServiceRequest => {
59-
return { invoke: createInvoke(item), item, save: saveRequest }
47+
return { invoke: createInvoke(item), item }
6048
}
6149
})
6250
return [item.name, proxy]
@@ -66,20 +54,18 @@ const createServiceRequests = ({ api, _id, item, save }: any) => {
6654
export const createServices = (api: ClientBuilder) => {
6755
return async (_id: string) => {
6856
const item = await api.services[_id].get()
69-
const save = (data: ItemService) => api.services[_id].patch<ItemService>(data)
7057
const client = getClient(item)
7158

7259
const requests = Object.fromEntries(
73-
item.requests.map(createServiceRequests({ api, _id, item, save }))
60+
item.requests.map(createServiceRequests({ api, _id, item }))
7461
)
7562

76-
return { client, requests, item, save } // see NOTE bellow
63+
return { client, requests, item } // see NOTE bellow
7764
}
7865
}
7966

8067
// NOTE: cannot return client directly like "return client"
8168
// nor use spread operator like "return { ...client, {...})" nor
8269
// "return Object.assign(client, {...})" somehow since client is
8370
// a Proxy object so we return a new object, which also extension
84-
// and prevents naming conflicts between metadata (e.g. item),
85-
// the client instance and eventual utilitiess (e.g. save)
71+
// and prevents naming conflicts between other props and methods

Diff for: src/services/types.ts

-2
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,11 @@ export interface Service {
44
client: Client;
55
requests: ServiceRequest[];
66
item: ItemService;
7-
save: (data: ItemService) => Promise<ItemService>;
87
}
98

109
export interface ServiceRequest {
1110
invoke: () => Promise<any>;
1211
item: ItemServiceRequest;
13-
save: (data: ItemServiceRequest) => Promise<ItemServiceRequest>;
1412
}
1513

1614
export interface ItemService {

0 commit comments

Comments
 (0)