npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

Iโ€™ve always been into building performant and accessible sites, but lately Iโ€™ve been taking it extremely seriously. So much so that Iโ€™ve been building a tool to help me optimize and monitor the sites that I build to make sure that Iโ€™m making an attempt to offer the best experience to those who visit them. If youโ€™re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, ๐Ÿ‘‹, Iโ€™m Ryan Hefnerย  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If youโ€™re interested in other things Iโ€™m working on, follow me on Twitter or check out the open source projects Iโ€™ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soonโ€“ish.

Open Software & Tools

This site wouldnโ€™t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you ๐Ÿ™

ยฉ 2024 โ€“ย Pkg Stats / Ryan Hefner

spreadorm

v2.0.0

Published

๐Ÿช„ SpreadORM: TypeScript ORM for Google Sheets (like magic!) โœจ Effortlessly manage your spreadsheet data with ease.

Downloads

80

Readme

๐Ÿ—„๏ธ SpreadORM - Google Sheets ORM

Version License Downloads

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.

๐Ÿš€ Key Features

  • 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

๐Ÿ› ๏ธ Installation

To use SpreadORM, install it via npm:

npm install spreadorm

๐ŸŒŸ Usage

Hereโ€™s how you can use SpreadORM to interact with your Google Sheets.

Initialize SpreadORM

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);

Managing Cache

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

Querying Data

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 },
});

Reset Cache

To reset the internal cache and force a fresh data fetch:

await orm.reset();

๐Ÿ“Š Data Structure

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;
}

๐Ÿ“š Documentation

For detailed documentation and advanced usage examples, please visit our SpreadORM Wiki.

๐Ÿค Contributing

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.

๐Ÿ“ License

SpreadORM is licensed under the MIT License. For more details, see the LICENSE file.

๐Ÿ™‹โ€โ™‚๏ธ Contact

Have questions or suggestions? Feel free to open an issue or contact us:

๐Ÿ“ง [email protected]


Happy Coding! ๐Ÿ˜ƒ