Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/simultsop/d1driver
Simple prototyping Cloudflare D1 driver
https://github.com/simultsop/d1driver
cloudflare d1driver
Last synced: 3 months ago
JSON representation
Simple prototyping Cloudflare D1 driver
- Host: GitHub
- URL: https://github.com/simultsop/d1driver
- Owner: simultsop
- Created: 2024-07-12T05:04:28.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-09-15T13:55:24.000Z (5 months ago)
- Last Synced: 2024-10-02T16:36:28.551Z (5 months ago)
- Topics: cloudflare, d1driver
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/@s38n/d1driver
- Size: 44.9 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# d1driver
A lightweight TypeScript wrapper providing a simple interface to interact with SQLite D1 databases within workerd runtime intended for prototyping. Reducing SQL boilerplate to get, create, update, and remove functions. Not interfering with sqlite functionality.
# Installation
```npm install @s32n/d1driver```# Usage
```nodeimport { get, create, update, remove } from '@s32n/d1driver'
interface Env {
DB: D1Database;
}export const onRequestGet: PagesFunction = async (context) => {
const { results: posts } = await get(
context.env.DB,
"blog"
);if(posts.length===0)
new Response("no blog post found", { status: 404 });return Response.json(posts);
}export const onRequestPost: PagesFunction = async (context) => {
const blogFormData = await context.request.formData();
const newBlogPost = {
title: formData.get('title'),
content: formData.get('content'),
image: formData.get('imageUrl'),
createdAt: "CURRENT_TIMESTAMP"
}const { success, results } = await create(
context.env.DB,
"blog",
newBlogPost
);if( success !== true ) {
return new Response("something went wrong", {
status: 500,
});
}return Response.json( results.shift() )
}export const onRequestPatch: PagesFunction = async (context) => {
const blogFormData = await context.request.formData();const conditions = { id: blogFormData.get('id') }
const blogPostUpdates = {
title: formData.get('update-title'),
content: formData.get('update-content'),
image: formData.get('update-imageUrl'),
updatedAt: "CURRENT_TIMESTAMP"
}const { success, results } = await update(
context.env.DB,
"blog",
blogPostUpdates,
conditions
);if( success !== true ) {
return new Response("something went wrong", {
status: 500,
});
}return Response.json( results.shift() )
}export const onRequestDelete: PagesFunction = async (context) => {
const blogFormData = await context.request.formData();const conditions = { id: blogFormData.get('id') }
const { success } = await remove(
context.env.DB,
"blog",
conditions
);if( success !== true ) {
return new Response("something went wrong", {
status: 500,
});
}return new Response("successfully deleted blog post with id:" + conditions.id, {
status: 200,
});
}
```# What this wrapper doesn't do
It doesn't create migrations or prepare schema for your database. Also does not perform validation or any type of sanitization to parameters. Check out the single file source for more clarity.