Welcome to SpreadORM! π A lightweight Object-Relational Mapper (ORM) designed to interface with Google Sheets as if they were databases. This tool provides a simple yet powerful way to query, and manage filter in your Google Sheets using TypeScript. Perfect for developers who want an easy ORM for non-relational data.
- Simple Integration with Google Sheets via sheet ID
- Flexible Queries: Support for filtering, selecting, ordering, and limiting
- Find Methods: Fetch data by unique, first, last, or multiple rows
- Caching: Built-in caching for efficient data access
- TypeScript Support: Enforce strong typing with generics
To use SpreadORM, install it via npm:
npm install spreadorm
Hereβs how you can use SpreadORM to interact with your Google Sheets.
First, initialize the ORM with your Google Sheet ID:
import { SpreadORM } from 'spreadorm';
const sheetId = 'your-google-sheet-id';
const orm = new SpreadORM<MyDataType>(sheetId);
Enable/Disable Caching:
const orm = new SpreadORM<MyDataType>(sheetId, {
cache: {
enabled: true,
duration: 10 * 60 * 1000, // 10 minutes
},
});
// or
orm.configureCaching({
enabled: true,
duration: 5 * 60 * 1000, // 10 minutes
});
Get Cache Status:
const status = orm.getCacheStatus();
console.log(status.enabled); // true|false
console.log(status.valid); // true|false
console.log(status.lastFetchTime); // timestamp in milliseconds
Find multiple rows based on certain conditions:
const users = await orm.findMany({
where: { role: 'admin' },
orderBy: { key: 'createdAt', order: 'asc' },
limit: 10,
});
Count rows:
const totalUsers = await orm.count({
where: { active: true },
});
To reset the internal cache and force a fresh data fetch:
await orm.reset();
SpreadORM supports flexible data models, and you can customize it to fit any Google Sheet structure. Simply define your data structure using TypeScript interfaces.
interface User {
id: string;
name: string;
role: string;
createdAt: string;
active: boolean;
}
For detailed documentation and advanced usage examples, please visit our SpreadORM Wiki.
We welcome contributions! Whether it's a bug fix, feature suggestion, or enhancement, feel free to submit a pull request. Please read our Contributing Guidelines to get started.
SpreadORM is licensed under the MIT License. For more details, see the LICENSE file.
Have questions or suggestions? Feel free to open an issue or contact us:
π§ [email protected]
Happy Coding! π