02bca8e2365d6d270752381e7f7dc407dc4615ea
libdashstore
MSSQL schema + domain API for Dash. One class, methods mirror the file path under src/store/.
import sql from 'mssql';
import LibDashStore from 'libdashstore';
const pool = await sql.connect({ /* … */ });
const client = await new LibDashStore(pool); // runs initialize() (ensure schema, no purge)
SQL lives in src/sql/<table>.js. Schema DDL: src/schema.js / import 'libdashstore/schema'.
ID fields in the JS API use camelCase …Id (DB columns stay snake_case).
Schema
| Method | Description |
|---|---|
initialize() |
Runs all SCHEMA_SCRIPTS (IF NOT EXISTS). Does not purge. |
purge() |
Drops all known tables + number procedure. |
company
| Method | Signature | Returns |
|---|---|---|
create |
({ iso639, name, taxrate, reducedtaxrate }) |
{ id, rootCategoryId, languageId, taxrateId, reducedtaxrateId, taxfreerateId } |
update |
(id, { iso639, name, taxrate, reducedtaxrate }) |
{ id, rootCategoryId, languageId, taxrateId, reducedtaxrateId, taxfreerateId } |
delete |
(companyId) |
void |
list |
() |
{ id, rootCategoryId, languageId, taxrateId, reducedtaxrateId, taxfreerateId }[] |
create (transaction)
For POST /api/company:
- Fails if
nameis taken (Company name not available) - Ensures language by
iso639(get or create) - Ensures tax rows for
taxrate,reducedtaxrate, and0→taxfreerateId - Creates root category (
parentId = null) - Inserts company with all FKs set
update (transaction)
For PATCH /api/company/:id:
- Fails if company missing / name taken by another company
- Ensures lang + tax rates
- Updates
name,default_language_id,taxrate,reducedtaxrate
(taxfreerateId/ root category unchanged)
google_auth
| Method | Signature | Returns |
|---|---|---|
add |
(email) |
id |
getByEmail |
(email) |
{ id, email, createdAt, selectedCompanyId } | undefined |
listAllowedEmails |
() |
{ id, email, createdAt, selectedCompanyId }[] |
removeAllowedEmail |
(email) |
void |
setSelectedCompany |
(authId, companyId) |
void |
Backend mapping:
- Login:
getByEmail(email) - CLI user manager:
listAllowedEmails()/removeAllowedEmail(email)/add(email) PUT /api/auth/selected-company:setSelectedCompany(authId, companyId)
companyuser
| Method | Signature | Returns |
|---|---|---|
add |
(companyId, authId) |
id |
getByEmail |
(email) |
id[] |
delete |
(id) |
void |
lang
| Method | Signature | Returns |
|---|---|---|
create |
(iso639) |
id |
getByIso639 |
(iso639) |
{ id, iso639 } | undefined |
ensure |
(iso639, tx?) |
id |
list |
() |
{ id, iso639 }[] |
delete |
(id) |
void |
tax
| Method | Signature | Returns |
|---|---|---|
create |
(rate) |
id |
getByRate |
(rate) |
{ id, rate } | undefined |
ensure |
(rate, tx?) |
id |
list |
() |
{ id, rate }[] |
category
| Method | Signature | Returns |
|---|---|---|
create |
({ parentId, sort }) |
id |
updateParentId |
(id, parentId) |
void |
delete |
(id) |
void |
getTree |
(rootId) |
{ id, parentId, sort }[] |
Backend route cheatsheet
| Route | Store call |
|---|---|
POST /api/company |
company.create({ iso639, name, taxrate, reducedtaxrate }) |
PATCH /api/company/:id |
company.update(id, { iso639, name, taxrate, reducedtaxrate }) |
DELETE /api/company/:id |
company.delete(id) |
PUT /api/auth/selected-company |
google_auth.setSelectedCompany(authId, companyId) |
Scripts
npm run init-schema # apply SCHEMA_SCRIPTS via .env
npm run test:api # interactive API tester
npm run schema-graph # regenerate schema-graph.svg
Env: MSSQL_SERVER, MSSQL_DATABASE, MSSQL_USER, MSSQL_PASSWORD.
Description
Languages
JavaScript
100%