UNPKG

sheets-orm

Version:

Mengakses Google Sheets seperti database dengan query mirip ORM

156 lines (123 loc) • 3.82 kB
# šŸ“œ sheets-orm šŸ“Š **Google Sheets sebagai ORM (Object-Relational Mapping)** menggunakan **Node.js & TypeScript**. Memungkinkan Anda **menggunakan Google Sheets sebagai database sederhana** dengan fitur: āœ” **CRUD (Create, Read, Update, Delete)** āœ” **Validasi data sebelum insert/update** āœ” **Query filtering untuk pencarian fleksibel** āœ” **Pagination (Limit & Offset) untuk findAll()** āœ” **Hooks Before/After Insert & Update** ## šŸš€ Instalasi ```sh npm install sheets-orm # atau dengan yarn yarn add sheets-orm ``` ## šŸ›  Konfigurasi Sebelum menggunakan `sheets-orm`, Anda perlu **mengatur Google Sheets API** dan mendapatkan **Service Account JSON**. 1ļøāƒ£ **Buat project di [Google Cloud Console](https://console.cloud.google.com/)** 2ļøāƒ£ **Aktifkan Google Sheets API** 3ļøāƒ£ **Buat Service Account** dan unduh JSON-nya 4ļøāƒ£ **Bagikan akses edit** ke Service Account (gunakan email dari JSON) 5ļøāƒ£ **Simpan JSON kredensial dan atur variabel lingkungan** ```sh GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json" GOOGLE_SPREADSHEET_ID="your-spreadsheet-id" ``` ## šŸ“Œ Cara Menggunakan ### 1ļøāƒ£ Import Library ```ts import { GoogleSheetsORM } from "sheets-orm"; ``` ### 2ļøāƒ£ Konfigurasi ORM ```ts const SPREADSHEET_ID = process.env.SPREADSHEET_ID!; const SHEET_NAME = "your-sheet-name"; interface User { id: string; name: string; age: number; } const orm = new GoogleSheetsORM<User>(SPREADSHEET_ID, SHEET_NAME); ``` ## šŸ“ CRUD Operations ### āž• Insert Data ```ts await orm.insert({ id: "1", name: "Alice", age: 25 }); ``` ### šŸ” Find All Data ```ts const users = await orm.findAll(); console.log(users); ``` ### šŸ” Find with Filtering ```ts const filteredUsers = await orm.findAll({ name: "Alice" }); console.log(filteredUsers); ``` ### šŸ“Œ Find with Pagination ```ts const users = await orm.findAll({}, { limit: 10, offset: 20 }); console.log(users); ``` ### šŸ” Find One by Column ```ts const user = await orm.findOne("id", "1"); console.log(user); ``` ### āœļø Update Data ```ts await orm.update("id", "1", { name: "Alice Updated", age: 26 }); ``` ### šŸ—‘ Delete Data ```ts await orm.delete("id", "1"); ``` ## šŸŽÆ Hooks (Before/After) Menjalankan fungsi sebelum dan sesudah operasi **insert** & **update**. ```ts orm.beforeInsert = async (data) => { console.log("Before Insert:", data); return data; // Bisa ubah data sebelum insert }; orm.afterInsert = async (data) => { console.log("After Insert:", data); }; orm.beforeUpdate = async (data) => { console.log("Before Update:", data); return data; }; orm.afterUpdate = async (data) => { console.log("After Update:", data); }; ``` ## šŸ“Œ Struktur Data di Google Sheets | id | name | age | |----|-------|-----| | 1 | Alice | 25 | | 2 | Bob | 30 | ORM akan membaca/mengubah format seperti ini **secara otomatis**. ## šŸŽØ Advanced Customization ### šŸ· Custom Sheet Name Gunakan ORM dengan **berbagai sheet berbeda** dalam satu spreadsheet. ```ts const usersORM = new GoogleSheetsORM<User>(SPREADSHEET_ID, "Users"); const ordersORM = new GoogleSheetsORM<Order>(SPREADSHEET_ID, "Orders"); ``` ### šŸ“Œ Dynamic Range Jika Anda ingin menentukan range secara manual: ```ts await orm.findAll({}, { range: "A1:Z100" }); ``` ### šŸ”„ Auto Generate ID Buat `id` otomatis saat insert: ```ts orm.beforeInsert = async (data) => { return { id: Date.now().toString(), ...data }; }; ``` ## šŸ’” Kesimpulan āœ… **CRUD langsung ke Google Sheets sebagai database** āœ… **Filter dan Pagination mendukung data besar** āœ… **Hooks untuk proses sebelum/sesudah insert & update** āœ… **Mudah digunakan dalam proyek TypeScript & JavaScript** šŸš€ **Gunakan `sheets-orm` untuk proyek ringan dengan database berbasis Google Sheets!**