longcelot-sheet-db 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # 📦 longcelot-sheet-db
2
2
 
3
+ [![CI](https://github.com/vannseavlong/longcelot-sheet-staging/actions/workflows/ci.yml/badge.svg)](https://github.com/vannseavlong/longcelot-sheet-staging/actions/workflows/ci.yml)
4
+ [![npm version](https://img.shields.io/npm/v/longcelot-sheet-db)](https://www.npmjs.com/package/longcelot-sheet-db)
5
+ [![license](https://img.shields.io/npm/l/longcelot-sheet-db)](LICENSE)
6
+
3
7
  **Google Sheets-backed Staging Database for Node.js**
4
8
 
5
9
  A schema-first, actor-aware database adapter that uses Google Sheets as the storage engine. Perfect for MVPs, prototypes, staging environments, and internal tools where cost and simplicity matter.
@@ -276,12 +280,7 @@ user-sheet-123
276
280
 
277
281
  ## 🎓 Complete Example
278
282
 
279
- See the [Student Web App](./examples/student-app) for a complete implementation with:
280
- - 4 actors (admin, student, teacher, parent)
281
- - 20+ schema definitions
282
- - Authentication flow
283
- - Role-based permissions
284
- - CRUD operations
283
+ Coming Soon!
285
284
 
286
285
  ## 🔄 Migration Path
287
286
 
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAKA,wBAAsB,WAAW,kBAuHhC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA4BA,wBAAsB,WAAW,kBA8GhC"}
@@ -8,8 +8,29 @@ const fs_1 = __importDefault(require("fs"));
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const inquirer_1 = __importDefault(require("inquirer"));
10
10
  const chalk_1 = __importDefault(require("chalk"));
11
+ function printBanner() {
12
+ const c = chalk_1.default.hex('#05b5fb').bold;
13
+ const lines = [
14
+ '█ ██ █ █ ██ ███ ████ █ ██ ████',
15
+ '█ █ █ ██ █ █ █ █ █ █ █ █ ',
16
+ '█ █ █ █ ██ █ ██ █ ███ █ █ █ █ ',
17
+ '█ █ █ █ █ █ █ █ █ █ █ █ █ ',
18
+ '████ ██ █ █ ███ ███ ████ ████ ██ █ ',
19
+ '',
20
+ ' ███ █ █ ████ ████ ████ ███ ███ ',
21
+ ' █ █ █ █ █ █ █ █ █ █ ',
22
+ ' ██ ████ ███ ███ █ █ █ ███ ',
23
+ ' █ █ █ █ █ █ █ █ █ █ ',
24
+ ' ███ █ █ ████ ████ █ ███ ███ ',
25
+ ];
26
+ console.log();
27
+ lines.forEach((line) => console.log(' ' + c(line)));
28
+ console.log();
29
+ console.log(' ' + chalk_1.default.hex('#05b5fb')('Google Sheets-backed Staging Database Adapter'));
30
+ console.log();
31
+ }
11
32
  async function initCommand() {
12
- console.log(chalk_1.default.blue.bold('🚀 Initializing longcelot-sheet-db project...\n'));
33
+ printBanner();
13
34
  const answers = await inquirer_1.default.prompt([
14
35
  {
15
36
  type: 'input',
@@ -30,27 +51,6 @@ async function initCommand() {
30
51
  default: 'admin,user',
31
52
  filter: (input) => input.split(',').map((s) => s.trim()),
32
53
  },
33
- {
34
- type: 'input',
35
- name: 'googleClientId',
36
- message: 'Google Client ID:',
37
- },
38
- {
39
- type: 'input',
40
- name: 'googleClientSecret',
41
- message: 'Google Client Secret:',
42
- },
43
- {
44
- type: 'input',
45
- name: 'googleRedirectUri',
46
- message: 'Google Redirect URI:',
47
- default: 'http://localhost:3000/auth/callback',
48
- },
49
- {
50
- type: 'input',
51
- name: 'adminSheetId',
52
- message: 'Admin Sheet ID (leave empty to create later):',
53
- },
54
54
  ]);
55
55
  const configContent = `export default {
56
56
  projectName: "${answers.projectName}",
@@ -58,10 +58,17 @@ async function initCommand() {
58
58
  actors: ${JSON.stringify(answers.actors, null, 2)}
59
59
  };
60
60
  `;
61
- const envContent = `GOOGLE_CLIENT_ID=${answers.googleClientId}
62
- GOOGLE_CLIENT_SECRET=${answers.googleClientSecret}
63
- GOOGLE_REDIRECT_URI=${answers.googleRedirectUri}
64
- ADMIN_SHEET_ID=${answers.adminSheetId}
61
+ const envContent = `# Google OAuth credentials
62
+ # Get these at: https://console.cloud.google.com/apis/credentials
63
+ GOOGLE_CLIENT_ID=
64
+ GOOGLE_CLIENT_SECRET=
65
+ GOOGLE_REDIRECT_URI=http://localhost:3000/auth/callback
66
+
67
+ # Your central admin Google Sheet ID
68
+ # Create a blank Google Sheet and paste the ID from its URL here
69
+ ADMIN_SHEET_ID=
70
+
71
+ # Super admin email (new user sheets will be shared with this account)
65
72
  SUPER_ADMIN_EMAIL=${answers.superAdminEmail}
66
73
  `;
67
74
  fs_1.default.writeFileSync('sheet-db.config.ts', configContent);
@@ -109,14 +116,18 @@ export default defineTable({
109
116
  }
110
117
  }
111
118
  }
112
- console.log(chalk_1.default.green('✅ Project initialized successfully!\n'));
113
- console.log(chalk_1.default.yellow('Created files:'));
114
- console.log(' - sheet-db.config.ts');
115
- console.log(' - .env');
116
- console.log(' - schemas/');
119
+ console.log(chalk_1.default.green('\n✅ Project initialized!\n'));
120
+ console.log(chalk_1.default.yellow('Created:'));
121
+ console.log(' ' + chalk_1.default.white('sheet-db.config.ts'));
122
+ console.log(' ' + chalk_1.default.white('.env'));
123
+ console.log(' ' + chalk_1.default.white('schemas/'));
117
124
  console.log(chalk_1.default.cyan('\nNext steps:'));
118
- console.log(' 1. Run: npm install longcelot-sheet-db');
119
- console.log(' 2. Generate tables: pnpm sheet-db generate <table-name>');
120
- console.log(' 3. Sync to sheets: pnpm sheet-db sync\n');
125
+ console.log(' 1. ' + chalk_1.default.white('Fill in your .env file:'));
126
+ console.log(' ' + chalk_1.default.gray('GOOGLE_CLIENT_ID=<your-client-id>'));
127
+ console.log(' ' + chalk_1.default.gray('GOOGLE_CLIENT_SECRET=<your-client-secret>'));
128
+ console.log(' ' + chalk_1.default.gray('ADMIN_SHEET_ID=<your-sheet-id>'));
129
+ console.log(' ' + chalk_1.default.dim('→ https://console.cloud.google.com/apis/credentials'));
130
+ console.log(' 2. ' + chalk_1.default.white('Generate tables: sheet-db generate <table-name>'));
131
+ console.log(' 3. ' + chalk_1.default.white('Sync to sheets: sheet-db sync\n'));
121
132
  }
122
133
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "longcelot-sheet-db",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Google Sheets-backed staging database adapter for Node.js with schema-first design",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",