Commit Graph

45 Commits

Author SHA1 Message Date
seb
561ba5bb99 Store Google profile picture bytes on google_auth 2026-08-05 11:08:06 +02:00
seb
d1eb2716ae Link articlehistory to companyuser; store Google picture and sub on google_auth 2026-08-05 10:57:50 +02:00
seb
46c85fe29e Add articlehistory on updateBySku and getHistoryBySku 2026-08-05 09:17:17 +02:00
seb
82c61e599d export 2026-08-04 01:24:27 +02:00
seb
d313fc7a85 Rewrite article API docs with explicit TypeScript-style types
Every method now shows typed signatures and return types. New
SearchIndexEntry and ArticleDetail types replace the old vague
shorthand. All prose paragraphs reference ArticleDetail instead of
"same shape as getBySku".
2026-08-03 22:38:28 +02:00
seb
a645c91460 Fix listSearchIndex return type in README table 2026-08-03 22:35:05 +02:00
seb
c8b1a73b62 Add categoryIds to article.listSearchIndex response 2026-08-03 22:33:46 +02:00
seb
84bb561031 Add article.listSearchIndex for client-side search preload
Returns all company articles with id, sku, name, and eans as a flat
array. Walks the category tree to find reachable articles. Single
query using recursive CTE + FOR JSON for eans.
2026-08-03 22:31:36 +02:00
seb
6128fc59fd Add category image add/delete with categorypic SQL layer 2026-08-03 07:38:14 +02:00
seb
829ab19f59 Add name column to posterminal table
- Added required name NVARCHAR(255) NOT NULL column to posterminal schema
- Updated SQL queries (LIST_BY_COMPANY, GET_BY_ID, CREATE, UPDATE) to include name
- Updated upsert store method to validate and persist name
- Updated README with name in method signatures and return types
2026-08-03 06:32:25 +02:00
seb
e7c43ab4e7 Remove ?companyId query params from route cheatsheet
Company ID is derived from the auth token cookie, not query params.
2026-08-03 06:20:22 +02:00
seb
831bf52c14 Add POS terminal category visibility system
Add posterminal and posterminalcategory tables to control which categories
are visible on each POS terminal. The existence of a row in
posterminalcategory means the category is visible on that terminal.

Store methods:
- posterminal.list/upsert/delete - CRUD for terminals
- posterminal.setOn/setOff - toggle single category on a terminal
- posterminal.setOnAll/setOffAll - toggle all categories on a terminal
- posterminal.getCategoryPosterminalIds - internal, used by category tree

The category tree (getTreeForCompany) now includes a posterminalIds array
on each node listing which terminals have that category enabled.
2026-08-03 06:14:25 +02:00
seb
3b06c3117d u 2026-08-03 03:57:16 +02:00
seb
d8d66ce105 Add category.move to reparent a category.
Validates both source and target via resolveCategoryAccess so the new
parent must be a category of the same authorized company, and guards
against moving into a descendant (cycle). Assigns next sibling sort.
2026-08-03 03:01:02 +02:00
seb
b070607357 Add category.order to reorder siblings under a parent.
Sets each direct child's sort to its index in the given categoryIds,
scoped by parentId. Validates the set matches the current children.
2026-08-02 19:41:54 +02:00
seb
e96bfb0624 u 2026-08-02 19:02:10 +02:00
seb
b890843445 u 2026-08-02 19:01:00 +02:00
seb
787e411547 Add company-scoped brand and company settings API.
brand now carries a NOT NULL company_id (unique per (company_id, name))
with brand.list/upsert/delete backed by resolveCompanyAccess. Adds
companysetting key-value store (list/get/set/delete, frontend flag).
2026-08-01 06:59:27 +02:00
seb
12e83a7ffb Add company-scoped unit list/upsert/delete and article unit patches.
Units are isolated per company; article detail exposes full unit shape, and unused units can be deleted safely via FK NO ACTION.
2026-08-01 06:12:24 +02:00
seb
54700a145e Add article.setPricesBySku to replace POS prices for a SKU.
Gives dashback a single store call that atomically replaces all price rows for the article’s poscustomergroup.
2026-08-01 05:16:50 +02:00
seb
9be9f7f74c u 2026-08-01 05:10:03 +02:00
seb
ee895fab5f Update README and SQL files to include 'fullHash', 'fullW', 'fullH', and 'fullSize' for articles and photos 2026-08-01 04:33:00 +02:00
seb
1756dc7ef0 u 2026-08-01 03:37:45 +02:00
seb
69a24192d3 u 2026-08-01 02:15:21 +02:00
seb
59c874144b u 2026-08-01 01:59:05 +02:00
seb
a05a4791d6 u 2026-08-01 01:50:22 +02:00
seb
671064bf3f u 2026-08-01 01:36:49 +02:00
seb
243143e7eb u 2026-07-31 20:10:19 +02:00
seb
e8326e22ac u 2026-07-31 19:49:07 +02:00
seb
6b1701d4dc u 2026-07-31 18:15:15 +02:00
seb
c2e128cb55 u 2026-07-31 17:50:06 +02:00
seb
7e1e96d3cd u 2026-07-31 16:17:33 +02:00
seb
14297a1568 u 2026-07-31 16:13:31 +02:00
seb
f9dec6d51a u 2026-07-31 16:06:51 +02:00
seb
38f90ceec1 u 2026-07-31 15:37:51 +02:00
seb
6cc6dbb9e8 u 2026-07-31 15:36:48 +02:00
seb
818d799f63 u 2026-07-31 09:09:34 +02:00
seb
84a7c6f7ef u 2026-07-31 09:03:58 +02:00
seb
99dd76075e u 2026-07-31 09:00:14 +02:00
seb
4f98082061 u 2026-07-31 07:42:19 +02:00
seb
39c5820947 u 2026-07-31 07:40:27 +02:00
seb
bbd69e8c7c u 2026-07-31 07:22:34 +02:00
seb
02bca8e236 u 2026-07-31 05:57:23 +02:00
seb
b99c3a9ec7 u 2026-07-31 05:46:33 +02:00
seb
a57e81fe30 u 2026-07-31 05:43:41 +02:00