This commit is contained in:
seb
2026-07-31 00:20:20 +02:00
parent 6bdac7e543
commit af8ef0a788
23 changed files with 421 additions and 123 deletions

View File

@@ -0,0 +1,14 @@
import sql from 'mssql';
import { CREATE } from '../../sql/category.js';
export default function create(pool) {
return async ({ parent_id, sort }) => {
const result = await pool
.request()
.input('parentId', sql.Int, parent_id)
.input('sort', sql.Int, sort)
.query(CREATE);
return result.recordset[0].id;
};
}

View File

@@ -1,30 +1,6 @@
import sql from 'mssql';
import { GET_TREE } from '../../sql/category.js';
function buildTree(rows, rootId) {
const byId = new Map();
for (const row of rows) {
byId.set(row.id, {
id: row.id,
parent_id: row.parent_id,
sort: row.sort,
children: [],
});
}
let root = null;
for (const node of byId.values()) {
if (node.id === rootId) {
root = node;
continue;
}
const parent = byId.get(node.parent_id);
if (parent) parent.children.push(node);
}
return root;
}
export default function getTree(pool) {
return async (rootId) => {
const result = await pool
@@ -32,7 +8,6 @@ export default function getTree(pool) {
.input('rootId', sql.Int, rootId)
.query(GET_TREE);
if (result.recordset.length === 0) return null;
return buildTree(result.recordset, rootId);
return result.recordset;
};
}

View File

@@ -0,0 +1,13 @@
import sql from 'mssql';
import { CREATE } from '../../sql/company.js';
export default function create(pool) {
return async ({ name }) => {
const result = await pool
.request()
.input('name', sql.NVarChar(255), name)
.query(CREATE);
return result.recordset[0].id;
};
}

View File

@@ -0,0 +1,11 @@
import sql from 'mssql';
import { DELETE } from '../../sql/company.js';
export default function del(pool) {
return async (companyId) => {
await pool
.request()
.input('companyId', sql.Int, companyId)
.query(DELETE);
};
}

View File

@@ -9,7 +9,7 @@ export default function getByCompanyUserId(pool) {
.query(GET_BY_COMPANY_USER_ID);
const row = result.recordset[0];
if (!row) return null;
if (!row) return;
return [row.id, row.default_language_id, row.root_category_id, row.name];
};

View File

@@ -0,0 +1,8 @@
import { LIST } from '../../sql/company.js';
export default function list(pool) {
return async () => {
const result = await pool.request().query(LIST);
return result.recordset;
};
}

View File

@@ -0,0 +1,12 @@
import sql from 'mssql';
import { SET_DEFAULT_LANG } from '../../sql/company.js';
export default function setDefaultLang(pool) {
return async (companyId, languageId) => {
await pool
.request()
.input('companyId', sql.Int, companyId)
.input('languageId', sql.Int, languageId)
.query(SET_DEFAULT_LANG);
};
}

View File

@@ -0,0 +1,12 @@
import sql from 'mssql';
import { SET_ROOT_CATEGORY } from '../../sql/company.js';
export default function setRootCategory(pool) {
return async (companyId, categoryId) => {
await pool
.request()
.input('companyId', sql.Int, companyId)
.input('categoryId', sql.Int, categoryId)
.query(SET_ROOT_CATEGORY);
};
}

View File

@@ -0,0 +1,14 @@
import sql from 'mssql';
import { ADD } from '../../sql/companyuser.js';
export default function add(pool) {
return async (companyId, authId) => {
const result = await pool
.request()
.input('companyId', sql.Int, companyId)
.input('authId', sql.Int, authId)
.query(ADD);
return result.recordset[0].id;
};
}

View File

@@ -8,6 +8,6 @@ export default function getByEmail(pool) {
.input('email', sql.NVarChar(320), email)
.query(GET_BY_EMAIL);
return result.recordset[0]?.id ?? null;
return result.recordset.map((row) => row.id);
};
}

View File

@@ -0,0 +1,13 @@
import sql from 'mssql';
import { ADD } from '../../sql/google_auth.js';
export default function add(pool) {
return async (email) => {
const result = await pool
.request()
.input('email', sql.NVarChar(320), email)
.query(ADD);
return result.recordset[0].id;
};
}

View File

@@ -0,0 +1,11 @@
import sql from 'mssql';
import { DEL } from '../../sql/google_auth.js';
export default function del(pool) {
return async (id) => {
await pool
.request()
.input('id', sql.Int, id)
.query(DEL);
};
}

View File

@@ -0,0 +1,8 @@
import { LIST } from '../../sql/google_auth.js';
export default function list(pool) {
return async () => {
const result = await pool.request().query(LIST);
return result.recordset;
};
}

13
src/store/lang/create.js Normal file
View File

@@ -0,0 +1,13 @@
import sql from 'mssql';
import { CREATE } from '../../sql/language.js';
export default function create(pool) {
return async (iso639) => {
const result = await pool
.request()
.input('iso639', sql.NVarChar(10), iso639)
.query(CREATE);
return result.recordset[0].id;
};
}

11
src/store/lang/delete.js Normal file
View File

@@ -0,0 +1,11 @@
import sql from 'mssql';
import { DELETE } from '../../sql/language.js';
export default function del(pool) {
return async (id) => {
await pool
.request()
.input('id', sql.Int, id)
.query(DELETE);
};
}

8
src/store/lang/list.js Normal file
View File

@@ -0,0 +1,8 @@
import { LIST } from '../../sql/language.js';
export default function list(pool) {
return async () => {
const result = await pool.request().query(LIST);
return result.recordset;
};
}