libdashstore
MSSQL schema + domain API for Dash. One class, methods mirror the file path under src/store/.
SQL lives in src/sql/<table>.js. Schema DDL: src/schema.js / import 'libdashstore/schema'.
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 }) |
result |
update |
(id, { iso639, name, taxrate, reducedtaxrate }) |
result |
delete |
(companyId) |
void |
list |
() |
result[] |
result (create / update / list items)
create (transaction)
For POST /api/company:
- Fails if
name is taken (Company name not available)
- Ensures language by
iso639 (get or create)
- Ensures tax rows for
taxrate, reducedtaxrate, and 0 → taxfreerate
- Creates root category (
parent_id = 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
(taxfreerate / root category unchanged)
google_auth
| Method |
Signature |
Returns |
add |
(email) |
number (auth id) |
getById |
(id) |
row | undefined |
getByEmail |
(email) |
row | undefined |
setSelectedCompany |
(authId, companyId) |
void |
list |
() |
row[] |
del |
(id) |
void |
Row shape
Backend mapping:
- Login:
getByEmail(email) ← getAllowedEmail
- Auth middleware:
getById(id) ← getAllowedEmailById
PUT /api/auth/selected-company: setSelectedCompany(authId, companyId)
companyuser
| Method |
Signature |
Returns |
add |
(companyId, authId) |
number (companyuser id) |
getByEmail |
(email) |
number[] (companyuser ids) |
delete |
(id) |
void |
lang
| Method |
Signature |
Returns |
create |
(iso639) |
number |
getByIso639 |
(iso639) |
{ id, iso639 } | undefined |
ensure |
(iso639, tx?) |
number (existing or new id) |
list |
() |
{ id, iso639 }[] |
delete |
(id) |
void |
tax
| Method |
Signature |
Returns |
create |
(rate) |
number |
getByRate |
(rate) |
{ id, rate } | undefined |
ensure |
(rate, tx?) |
number (existing or new id) |
list |
() |
{ id, rate }[] |
category
| Method |
Signature |
Returns |
create |
({ parent_id, sort }) |
number |
updateParentId |
(id, parentId) |
void |
delete |
(id) |
void |
getTree |
(rootId) |
{ id, parent_id, sort }[] (flat CTE result) |
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
Env: MSSQL_SERVER, MSSQL_DATABASE, MSSQL_USER, MSSQL_PASSWORD.