Could you pass in an RPC target that makes reads only to their “namespace”?
Could you pass in an RPC target that makes reads only to their “namespace”?
json_extract(titles, $.romanji) as romanji, json_extract(titles, $.english) as english, ... ?titles -> $ or titles ->> $ might do itwrangler.toml which has database id bindings ?wrangler.toml is safe to publish, as long as you aren't putting secrets in it





Currentlydo you have a recent version of wrangler?
You can use https://github.com/cacjs/cac for building CLI, and https://github.com/natemoo-re/clack for interactive prompts like selecting a database
clack?json_extract(titles, $.romanji) as romanji, json_extract(titles, $.english) as english, ...titles -> $titles ->> $import type { DrizzleD1Database } from 'drizzle-orm/d1';
import { drizzle } from 'drizzle-orm/d1';
import { eq } from 'drizzle-orm/expressions';
import type { Request as IttyRequest, Route } from 'itty-router';
import { Router } from 'itty-router';
import { json } from 'itty-router-extras';
import { users } from './schema';
import { sql } from 'drizzle-orm';
export interface Env {
DB: D1Database;
}
interface Request extends IttyRequest {
db: DrizzleD1Database;
}
interface Methods {
get: Route;
post: Route;
}
async function injectDB(request: Request, env: Env) {
const db = drizzle(env.DB);
request.db = db;
}
const router = Router<Request, Methods>({ base: '/' });
router.get("/favicon.ico",()=>{
return json({});
})
router.get('/users', injectDB, async (req: Request, env: Env) => {
const query = req.db.select().from(users);
console.log(query.toSQL());
const result = await query.all();
return json(result);
});
router.get('/users/:id', injectDB, async (req: Request, env: Env) => {
const result : any = await req.db
.select().from(users)
.where(eq(users.id, Number(req.params!['id'])))
.get();
return json(result);
});
router.post('/users', injectDB, async (req: Request, env: Env) => {
const { name, email } = await req.json!();
const res = await req.db.insert(users).values({ name, email }).returning().get();
return json({ res });
});
router.get("/indexes",injectDB, async(req,env)=>{
let data = await req.db.run(sql`SELECT name, type, sql FROM sqlite_schema WHERE type IN ('index');`);
return json(data);
})
export default {
fetch: router.handle,
};