Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/akshays-repo/zod_localstorage_orm_typescript
Overview This library is a TypeScript wrapper that combines zod validation and fp-ts to provide a robust local storage database experience. It offers an SQL-like experience(SQL-ORM), schema validation, and a simple API for writing, reading, updating, and deleting data in local storage.
https://github.com/akshays-repo/zod_localstorage_orm_typescript
Last synced: about 1 month ago
JSON representation
Overview This library is a TypeScript wrapper that combines zod validation and fp-ts to provide a robust local storage database experience. It offers an SQL-like experience(SQL-ORM), schema validation, and a simple API for writing, reading, updating, and deleting data in local storage.
- Host: GitHub
- URL: https://github.com/akshays-repo/zod_localstorage_orm_typescript
- Owner: akshays-repo
- Created: 2024-06-08T15:02:55.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-23T12:36:03.000Z (7 months ago)
- Last Synced: 2024-11-08T08:54:33.666Z (2 months ago)
- Language: TypeScript
- Size: 8.79 KB
- Stars: 0
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
## Local Storage API Library
This library provides a convenient way to interact with local storage using Zod schemas for validation. It includes methods for reading, writing, updating, and deleting data in local storage, with schema validation at each step.
### Installation
Install the necessary dependencies:
```bash
npm install zod fp-ts
```### Usage
#### Step 1: Define the Schema
Define your data schema using Zod:
```typescript
import { z } from "zod";
import { localStorageApi } from '../index';
const schema = z.object({
age: z
.number()
.min(0, {
message: "No human has less than 0 years, or not?",
})
.max(120, {
message: "You are too old for this app",
}),
link: z
.string()
.url({
message: "Only valid URLs allowed here (or none)",
})
.optional(),
});
const userStorageApi = localStorageApi(schema);
type UserStorageApiData = z.output;export type { UserStorageApiData };
export { userStorageApi };
```#### Step 2: Perform CRUD Operations
Use the `userStorageApi` methods to perform CRUD operations on your data:
```typescript
import { userStorageApi, UserStorageApiData } from './user.schema';const main = async () => {
// Define a sample user
const sampleUser: UserStorageApiData = {
age: 25,
link: 'https://example.com',
};// Write a single user to the "User" table
const writeResult = await userStorageApi.write(['User', sampleUser])();
console.log('Write Result:', writeResult);// Read all users from the "User" table
const readAllResult = await userStorageApi.readAll('User')();
console.log('Read All Result:', readAllResult);// Read users where the age is greater than 20
const readWhereResult = await userStorageApi.readWhere(['User', (user) => user.age > 20])();
console.log('Read Where Result:', readWhereResult);// Write multiple users to the "User" table
const additionalUsers: UserStorageApiData[] = [
{ age: 30, link: 'https://example1.com' },
{ age: 40 },
];
const writeAllResult = await userStorageApi.writeAll(['User', additionalUsers])();
console.log('Write All Result:', writeAllResult);// Update users, for example, increment the age by 1 for all users
const updateResult = await userStorageApi.update(['User', (user) => ({ ...user, age: user.age + 1 })])();
console.log('Update Result:', updateResult);// Delete all users from the "User" table
const deleteAllResult = await userStorageApi.deleteAll('User')();
console.log('Delete All Result:', deleteAllResult);
}main();
```### Explanation
1. **Define the Schema**: Create a Zod schema that defines the structure and validation rules for your data.
2. **Initialize the API**: Use the `localStorageApi` function to create an API object for your schema.
3. **CRUD Operations**:
- **write**: Write a single item to the local storage table.
- **readAll**: Read all items from the local storage table.
- **readWhere**: Read items from the local storage table that match a specific condition.
- **writeAll**: Write multiple items to the local storage table.
- **update**: Update items in the local storage table based on a condition.
- **deleteAll**: Delete all items from the local storage table.### License