Skip to content

Commit

Permalink
prepare().raw()
Browse files Browse the repository at this point in the history
  • Loading branch information
chientrm committed Aug 21, 2023
1 parent 4920113 commit 8106e53
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ import { createD1 } from 'cf-workers-proxy';
| `first()` ||
| `run()` ||
| `all()` ||
| `raw()` | |
| `raw()` | |
| `bind()` ||

### Service Bindings
Expand Down
3 changes: 3 additions & 0 deletions src/factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { PostData } from './data';
import { D1DatabaseExecProxy } from './proxies/d1_database/exec/proxy';
import { D1DatabasePreparedStatementAllProxy } from './proxies/d1_database/prepared_statement/all/proxy';
import { D1DatabasePreparedStatementFirstProxy } from './proxies/d1_database/prepared_statement/first/proxy';
import { D1DatabasePreparedStatementRawProxy } from './proxies/d1_database/prepared_statement/raw/proxy';
import { D1DatabasePreparedStatementRunProxy } from './proxies/d1_database/prepared_statement/run/proxy';
import { FetcherFetchProxy } from './proxies/fetcher/fetch/proxy';
import { KVGetProxy } from './proxies/kv/get/proxy';
Expand All @@ -17,6 +18,8 @@ class ProxyFactory {
return new D1DatabasePreparedStatementFirstProxy({ name, payload });
case D1DatabasePreparedStatementRunProxy.proxyType:
return new D1DatabasePreparedStatementRunProxy({ name, payload });
case D1DatabasePreparedStatementRawProxy.proxyType:
return new D1DatabasePreparedStatementRawProxy({ name, payload });
case D1DatabaseExecProxy.proxyType:
return new D1DatabaseExecProxy({ name, payload });
case FetcherFetchProxy.proxyType:
Expand Down
6 changes: 5 additions & 1 deletion src/proxies/d1_database/prepared_statement/proxy.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { ProxyHolder } from '../../proxy';
import { D1DatabasePreparedStatementAllProxy } from './all/proxy';
import { D1DatabasePreparedStatementFirstProxy } from './first/proxy';
import { D1DatabasePreparedStatementRawProxy } from './raw/proxy';
import { D1DatabasePreparedStatementRunProxy } from './run/proxy';

interface Payload {
Expand Down Expand Up @@ -41,7 +42,10 @@ class D1DatabasePreparedStatementProxy
return proxy.post<D1Result<T>>();
}
raw<T = unknown>(): Promise<T[]> {
throw new Error('Method not implemented.');
const { host, name } = this,
payload = this.payload,
proxy = new D1DatabasePreparedStatementRawProxy({ host, name, payload });
return proxy.post<T[]>();
}
}

Expand Down
29 changes: 29 additions & 0 deletions src/proxies/d1_database/prepared_statement/raw/proxy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { Proxy } from '../../../proxy';

interface Payload {
query: string;
}

class D1DatabasePreparedStatementRawProxy extends Proxy<Payload> {
static readonly proxyType = 'D1DatabasePreparedStatementRawProxy';
constructor({
host,
name,
payload,
}: {
host?: string;
name: string;
payload: Payload;
}) {
const proxyType = D1DatabasePreparedStatementRawProxy.proxyType;
super({ proxyType, host, name, payload });
}
async execute(env: any) {
const d1 = env[this.name] as D1Database,
{ query } = this.payload!,
result = await d1.prepare(query).raw();
return result;
}
}

export { D1DatabasePreparedStatementRawProxy };

0 comments on commit 8106e53

Please sign in to comment.