This commit is contained in:
seb
2026-09-29 11:21:57 +02:00
parent 5d2c8fdfed
commit 7bb674d5e7
10 changed files with 123 additions and 7 deletions

View File

@@ -167,6 +167,16 @@ export class MssqlProvider {
ALTER TABLE ledger ADD warehouse_id INT NULL;
ALTER TABLE ledger ADD CONSTRAINT FK_ledger_warehouse FOREIGN KEY (warehouse_id) REFERENCES warehouse(id) ON DELETE NO ACTION;
END
IF OBJECT_ID(N'dbo.posterminal', N'U') IS NOT NULL AND COL_LENGTH('posterminal', 'paired_at') IS NULL
BEGIN
ALTER TABLE posterminal ADD paired_at DATETIME2 NULL;
END
IF OBJECT_ID(N'dbo.posterminal', N'U') IS NOT NULL AND COL_LENGTH('posterminal', 'clientserial') IS NULL
BEGIN
ALTER TABLE posterminal ADD clientserial NVARCHAR(255) NULL;
END
`);
} catch {
// ignore

View File

@@ -3,7 +3,9 @@ SELECT
id,
name,
token,
pairingpin
pairingpin,
paired_at AS pairedAt,
clientserial AS clientserial
FROM posterminal
WHERE company_id = @companyId
ORDER BY id
@@ -15,20 +17,41 @@ SELECT
company_id AS companyId,
name,
token,
pairingpin
pairingpin,
paired_at AS pairedAt,
clientserial AS clientserial
FROM posterminal
WHERE id = @id
`;
export const FIND_BY_PAIRINGPIN = `
SELECT
id,
company_id AS companyId,
name,
token,
pairingpin,
paired_at AS pairedAt,
clientserial AS clientserial
FROM posterminal
WHERE pairingpin = @pairingpin
`;
export const PAIR = `
UPDATE posterminal
SET token = @token, paired_at = @pairedAt, clientserial = @clientserial, pairingpin = ''
WHERE id = @id
`;
export const CREATE = `
INSERT INTO posterminal (company_id, name, token, pairingpin)
OUTPUT INSERTED.id, INSERTED.name, INSERTED.token, INSERTED.pairingpin
VALUES (@companyId, @name, @token, @pairingpin)
INSERT INTO posterminal (company_id, name, token, pairingpin, paired_at, clientserial)
OUTPUT INSERTED.id, INSERTED.name, INSERTED.token, INSERTED.pairingpin, INSERTED.paired_at AS pairedAt, INSERTED.clientserial AS clientserial
VALUES (@companyId, @name, @token, @pairingpin, @pairedAt, @clientserial)
`;
export const UPDATE = `
UPDATE posterminal
SET name = @name, token = @token, pairingpin = @pairingpin
SET name = @name, token = @token, pairingpin = @pairingpin, paired_at = @pairedAt, clientserial = @clientserial
WHERE id = @id AND company_id = @companyId
`;

View File

@@ -777,6 +777,8 @@ BEGIN
name NVARCHAR(255) NOT NULL,
token NVARCHAR(255) NULL,
pairingpin NVARCHAR(50) NOT NULL,
paired_at DATETIME2 NULL,
clientserial NVARCHAR(255) NULL,
CONSTRAINT FK_posterminal_company FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX UQ_posterminal_token ON posterminal(token) WHERE token IS NOT NULL;

View File

@@ -413,6 +413,14 @@ export class BetterSqlite3Provider extends BetterSqlite3Executor {
`ALTER TABLE warehouse ADD COLUMN sort INTEGER NOT NULL DEFAULT 0`,
);
}
const posterminalCols = this.db.pragma('table_info("posterminal")').map((c) => c.name);
if (posterminalCols.length > 0 && !posterminalCols.includes('paired_at')) {
this.db.exec(`ALTER TABLE posterminal ADD COLUMN paired_at TEXT`);
}
if (posterminalCols.length > 0 && !posterminalCols.includes('clientserial')) {
this.db.exec(`ALTER TABLE posterminal ADD COLUMN clientserial TEXT`);
}
} catch {
// ignore
}

View File

@@ -5,6 +5,7 @@ const queries = translateQueries(source, 'posterminal');
export const {
CREATE, DELETE_BY_COMPANY_AND_ID, GET_BY_ID, LIST_BY_COMPANY,
LIST_CATEGORY_IDS, POSTERMINAL_IDS_BY_COMPANY, SET_OFF, SET_OFF_ALL, UPDATE,
FIND_BY_PAIRINGPIN, PAIR,
} = queries;
export const SET_ON = `

View File

@@ -533,6 +533,8 @@ CREATE TABLE IF NOT EXISTS posterminal (
name TEXT NOT NULL,
token TEXT,
pairingpin TEXT NOT NULL,
paired_at TEXT,
clientserial TEXT,
FOREIGN KEY (company_id) REFERENCES company(id) ON DELETE CASCADE
);
CREATE UNIQUE INDEX IF NOT EXISTS UQ_posterminal_token