1.3.0 • Published 8 months ago

@storecraft/database-turso v1.3.0

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

Storecraft Turso (libsql) Database support

Official libSql / Turso driver for StoreCraft on any platform. Includes a vector store.

npm i @storecraft/database-turso

Local usage

import 'dotenv/config';
import http from "node:http";
import { App } from '@storecraft/core'
import { NodePlatform } from '@storecraft/core/platform/node';
import { NodeLocalStorage } from '@storecraft/core/storage/node'
import { LibSQL, LibSQLVectorStore } from '@storecraft/database-turso'
import { migrateToLatest } from '@storecraft/database-turso/migrate.js'

const app = new App(
  {
    auth_admins_emails: ['admin@sc.com'],
  }
)
.withPlatform(new NodePlatform())
.withDatabase(
  new LibSQL(
    { 
      url: 'file:local.db',
    }
  )
)
.withStorage(new NodeLocalStorage('storage'))
.withVectorStore(
  new LibSQLVectorStore(
    {
      embedder: new OpenAIEmbedder(),
      url: 'file:local-vector.db'
    }
  )
).init();

await migrateToLatest(app.__show_me_everything.db, false);
await app.__show_me_everything.vector_store.createVectorIndex();

http.createServer(app.handler).listen(
  8000,
  () => {
    app.print_banner('http://localhost:8000');
  }
); 

Storecraft will search the following env variables

LIBSQL_URL=./data.db
# optional, if absent will use the same as LIBSQL_URL
LIBSQL_VECTOR_URL=./data-vector.db

So, you can instantiate with empty config

.withDatabase(
  new Turso()
)
.withVectorStore(
  new LibSQLVectorStore(
    {
      embedder: new OpenAIEmbedder(),
    }
  )
)

Cloud usage

connect to a cloud libsql and Turso platform

  • First, login to your turso account.
  • Create a database.
  • Create an API Key.

usage

import 'dotenv/config';
import http from "node:http";
import { App } from '@storecraft/core'
import { NodePlatform } from '@storecraft/core/platform/node';
import { NodeLocalStorage } from '@storecraft/core/storage/node'
import { Turso, LibSQLVectorStore } from '@storecraft/database-turso'
import { migrateToLatest } from '@storecraft/database-turso/migrate.js'

const app = new App(
  {
    auth_admins_emails: ['admin@sc.com'],
  }
)
.withPlatform(new NodePlatform())
.withDatabase(
  new Turso(
    { 
      prefers_batch_over_transactions: true,
      // all of these configurations can be inferred by env variables at init
      url: process.env.LIBSQL_URL,
      authToken: process.env.LIBSQL_API_TOKEN,
    }
  )
)
.withStorage(new NodeLocalStorage('storage'))
.withVectorStore(
  new LibSQLVectorStore(
    {
      embedder: new OpenAIEmbedder(),
      url: process.env.LIBSQL_URL,
      authToken: process.env.LIBSQL_API_TOKEN,
    }
  )
).init();

await migrateToLatest(app.__show_me_everything.db, false);
await app.__show_me_everything.vector_store.createVectorIndex();

http.createServer(app.handler).listen(
  8000,
  () => {
    app.print_banner('http://localhost:8000');
  }
); 

Storecraft will search the following env variables

LIBSQL_URL=libsql://<your_database_name>.something.com
LIBSQL_AUTH_TOKEN=your_api_key

So, you can instantiate with empty config

.withDatabase(
  new Turso()
)
.withVectorStore(
  new LibSQLVectorStore(
    {
      embedder: new OpenAIEmbedder(),
    }
  )
)
Author: Tomer Shalev <tomer.shalev@gmail.com>
1.0.19

10 months ago

1.0.18

10 months ago

1.0.17

10 months ago

1.0.16

10 months ago

1.2.5

9 months ago

1.3.0

8 months ago

1.0.22

9 months ago

1.0.21

9 months ago

1.0.20

10 months ago

1.0.23

9 months ago

1.0.15

10 months ago

1.0.14

10 months ago

1.0.13

11 months ago

1.0.12

11 months ago

1.0.11

11 months ago

1.0.10

11 months ago

1.0.9

11 months ago

1.0.8

12 months ago

1.0.7

12 months ago

1.0.6

1 year ago

1.0.5

1 year ago

1.0.2

1 year ago

1.0.4

1 year ago

1.0.3

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago