@helloleo/plugins 0.2.14 → 0.2.15

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.
@@ -1,13 +1 @@
1
- {
2
- "version": "7",
3
- "dialect": "sqlite",
4
- "entries": [
5
- {
6
- "idx": 0,
7
- "version": "6",
8
- "when": 1785420910012,
9
- "tag": "0000_tidy_kang",
10
- "breakpoints": true
11
- }
12
- ]
13
- }
1
+ {"version":"7","dialect":"sqlite","entries":[]}
@@ -1,18 +1,20 @@
1
- import { sql } from 'drizzle-orm'
2
- import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
3
-
4
- // Single source of truth for the D1 / libsql schema. Sqlite dialect → the same
5
- // definition runs on the dev cf-shim (libsql .dev.db, synced via `drizzle-kit
6
- // push`) and prod D1 (migrations via `wrangler d1 migrations apply`).
1
+ // Single source of truth for the database schema. Define tables here — the
2
+ // SQL migration files under drizzle/ are generated and applied automatically
3
+ // (dev on server start, production on publish). Never hand-write SQL or touch
4
+ // drizzle/. Prefer ADDING columns/tables over renaming or deleting existing
5
+ // ones: renames cannot be migrated automatically.
7
6
  //
8
- // Add your own tables here, then `bun run db:push` (dev) or `bun run
9
- // db:generate` + deploy (prod). Do NOT hand-write SQL — this file is the schema.
10
- export const entries = sqliteTable('entries', {
11
- id: integer('id').primaryKey({ autoIncrement: true }),
12
- label: text('label').notNull(),
13
- createdAt: integer('created_at')
14
- .notNull()
15
- .default(sql`(unixepoch())`),
16
- })
17
-
18
- export type Entry = typeof entries.$inferSelect
7
+ // Example:
8
+ //
9
+ // import { sql } from 'drizzle-orm'
10
+ // import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
11
+ //
12
+ // export const notes = sqliteTable('notes', {
13
+ // id: integer('id').primaryKey({ autoIncrement: true }),
14
+ // title: text('title').notNull(),
15
+ // createdAt: integer('created_at')
16
+ // .notNull()
17
+ // .default(sql`(unixepoch())`),
18
+ // })
19
+ //
20
+ // export type Note = typeof notes.$inferSelect
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute } from '@tanstack/react-router'
2
+ import { sql } from 'drizzle-orm'
2
3
  import { db } from '#/db'
3
- import { entries } from '#/db/schema'
4
4
 
5
5
  /**
6
6
  * Server route example: GET /api/health. Use this file as the base for
@@ -39,7 +39,9 @@ export const Route = createFileRoute('/api/health')({
39
39
  runtime: 'cloudflare-workers',
40
40
  }
41
41
 
42
- // Database health: lightweight query against a known table
42
+ // Database health: schema-agnostic connectivity ping. Deliberately
43
+ // NOT a query against an app table — the health probe must keep
44
+ // working no matter how src/db/schema.ts evolves.
43
45
  let database: {
44
46
  status: 'ok' | 'error'
45
47
  latencyMs: number
@@ -47,7 +49,7 @@ export const Route = createFileRoute('/api/health')({
47
49
  }
48
50
  const dbStart = Date.now()
49
51
  try {
50
- await db.select({ id: entries.id }).from(entries).limit(1)
52
+ await db.run(sql`SELECT 1`)
51
53
  database = {
52
54
  status: 'ok',
53
55
  latencyMs: Date.now() - dbStart,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@helloleo/plugins",
3
- "version": "0.2.14",
3
+ "version": "0.2.15",
4
4
  "description": "OpenCode plugins for HelloLeo",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -1,13 +1 @@
1
- {
2
- "version": "7",
3
- "dialect": "sqlite",
4
- "entries": [
5
- {
6
- "idx": 0,
7
- "version": "6",
8
- "when": 1785420910012,
9
- "tag": "0000_tidy_kang",
10
- "breakpoints": true
11
- }
12
- ]
13
- }
1
+ {"version":"7","dialect":"sqlite","entries":[]}
@@ -1,18 +1,20 @@
1
- import { sql } from 'drizzle-orm'
2
- import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
3
-
4
- // Single source of truth for the D1 / libsql schema. Sqlite dialect → the same
5
- // definition runs on the dev cf-shim (libsql .dev.db, synced via `drizzle-kit
6
- // push`) and prod D1 (migrations via `wrangler d1 migrations apply`).
1
+ // Single source of truth for the database schema. Define tables here — the
2
+ // SQL migration files under drizzle/ are generated and applied automatically
3
+ // (dev on server start, production on publish). Never hand-write SQL or touch
4
+ // drizzle/. Prefer ADDING columns/tables over renaming or deleting existing
5
+ // ones: renames cannot be migrated automatically.
7
6
  //
8
- // Add your own tables here, then `bun run db:push` (dev) or `bun run
9
- // db:generate` + deploy (prod). Do NOT hand-write SQL — this file is the schema.
10
- export const entries = sqliteTable('entries', {
11
- id: integer('id').primaryKey({ autoIncrement: true }),
12
- label: text('label').notNull(),
13
- createdAt: integer('created_at')
14
- .notNull()
15
- .default(sql`(unixepoch())`),
16
- })
17
-
18
- export type Entry = typeof entries.$inferSelect
7
+ // Example:
8
+ //
9
+ // import { sql } from 'drizzle-orm'
10
+ // import { integer, sqliteTable, text } from 'drizzle-orm/sqlite-core'
11
+ //
12
+ // export const notes = sqliteTable('notes', {
13
+ // id: integer('id').primaryKey({ autoIncrement: true }),
14
+ // title: text('title').notNull(),
15
+ // createdAt: integer('created_at')
16
+ // .notNull()
17
+ // .default(sql`(unixepoch())`),
18
+ // })
19
+ //
20
+ // export type Note = typeof notes.$inferSelect
@@ -1,6 +1,6 @@
1
1
  import { createFileRoute } from '@tanstack/react-router'
2
+ import { sql } from 'drizzle-orm'
2
3
  import { db } from '#/db'
3
- import { entries } from '#/db/schema'
4
4
 
5
5
  /**
6
6
  * Server route example: GET /api/health. Use this file as the base for
@@ -39,7 +39,9 @@ export const Route = createFileRoute('/api/health')({
39
39
  runtime: 'cloudflare-workers',
40
40
  }
41
41
 
42
- // Database health: lightweight query against a known table
42
+ // Database health: schema-agnostic connectivity ping. Deliberately
43
+ // NOT a query against an app table — the health probe must keep
44
+ // working no matter how src/db/schema.ts evolves.
43
45
  let database: {
44
46
  status: 'ok' | 'error'
45
47
  latencyMs: number
@@ -47,7 +49,7 @@ export const Route = createFileRoute('/api/health')({
47
49
  }
48
50
  const dbStart = Date.now()
49
51
  try {
50
- await db.select({ id: entries.id }).from(entries).limit(1)
52
+ await db.run(sql`SELECT 1`)
51
53
  database = {
52
54
  status: 'ok',
53
55
  latencyMs: Date.now() - dbStart,
@@ -1,5 +0,0 @@
1
- CREATE TABLE `entries` (
2
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
3
- `label` text NOT NULL,
4
- `created_at` integer DEFAULT (unixepoch()) NOT NULL
5
- );
@@ -1,50 +0,0 @@
1
- {
2
- "version": "6",
3
- "dialect": "sqlite",
4
- "id": "ec5ce3c5-da3c-496c-942e-72a9a9579093",
5
- "prevId": "00000000-0000-0000-0000-000000000000",
6
- "tables": {
7
- "entries": {
8
- "name": "entries",
9
- "columns": {
10
- "id": {
11
- "name": "id",
12
- "type": "integer",
13
- "primaryKey": true,
14
- "notNull": true,
15
- "autoincrement": true
16
- },
17
- "label": {
18
- "name": "label",
19
- "type": "text",
20
- "primaryKey": false,
21
- "notNull": true,
22
- "autoincrement": false
23
- },
24
- "created_at": {
25
- "name": "created_at",
26
- "type": "integer",
27
- "primaryKey": false,
28
- "notNull": true,
29
- "autoincrement": false,
30
- "default": "(unixepoch())"
31
- }
32
- },
33
- "indexes": {},
34
- "foreignKeys": {},
35
- "compositePrimaryKeys": {},
36
- "uniqueConstraints": {},
37
- "checkConstraints": {}
38
- }
39
- },
40
- "views": {},
41
- "enums": {},
42
- "_meta": {
43
- "schemas": {},
44
- "tables": {},
45
- "columns": {}
46
- },
47
- "internal": {
48
- "indexes": {}
49
- }
50
- }
@@ -1,5 +0,0 @@
1
- CREATE TABLE `entries` (
2
- `id` integer PRIMARY KEY AUTOINCREMENT NOT NULL,
3
- `label` text NOT NULL,
4
- `created_at` integer DEFAULT (unixepoch()) NOT NULL
5
- );
@@ -1,50 +0,0 @@
1
- {
2
- "version": "6",
3
- "dialect": "sqlite",
4
- "id": "ec5ce3c5-da3c-496c-942e-72a9a9579093",
5
- "prevId": "00000000-0000-0000-0000-000000000000",
6
- "tables": {
7
- "entries": {
8
- "name": "entries",
9
- "columns": {
10
- "id": {
11
- "name": "id",
12
- "type": "integer",
13
- "primaryKey": true,
14
- "notNull": true,
15
- "autoincrement": true
16
- },
17
- "label": {
18
- "name": "label",
19
- "type": "text",
20
- "primaryKey": false,
21
- "notNull": true,
22
- "autoincrement": false
23
- },
24
- "created_at": {
25
- "name": "created_at",
26
- "type": "integer",
27
- "primaryKey": false,
28
- "notNull": true,
29
- "autoincrement": false,
30
- "default": "(unixepoch())"
31
- }
32
- },
33
- "indexes": {},
34
- "foreignKeys": {},
35
- "compositePrimaryKeys": {},
36
- "uniqueConstraints": {},
37
- "checkConstraints": {}
38
- }
39
- },
40
- "views": {},
41
- "enums": {},
42
- "_meta": {
43
- "schemas": {},
44
- "tables": {},
45
- "columns": {}
46
- },
47
- "internal": {
48
- "indexes": {}
49
- }
50
- }