Files
timelimit-server/src/function/purchase/require-family-entry.ts
T
Jonas Lochmann 48d6a061f8 add full version debts system
foundation for granting the full version while consuming the same amount
automatically at the next purchase
2026-06-08 02:00:00 +02:00

61 lines
1.7 KiB
TypeScript

/*
* server component for the TimeLimit App
* Copyright (C) 2019 - 2026 Jonas Lochmann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
import { InternalServerError, Unauthorized } from 'http-errors'
import { Database, Transaction } from '../../database'
export const requireFamilyEntry = async ({ database, deviceAuthToken, transaction }: {
database: Database
deviceAuthToken: string
transaction: Transaction
}) => {
const deviceEntryUnsafe = await database.device.findOne({
where: {
deviceAuthToken
},
attributes: ['familyId'],
transaction
})
if (!deviceEntryUnsafe) {
throw new Unauthorized()
}
const deviceEntry = {
familyId: deviceEntryUnsafe.familyId
}
const familyEntryUnsafe = await database.family.findOne({
where: {
familyId: deviceEntry.familyId
},
attributes: ['fullVersionUntil', 'fullVersionDebts'],
transaction
})
if (!familyEntryUnsafe) {
throw new InternalServerError()
}
const familyEntry = {
fullVersionUntil: familyEntryUnsafe.fullVersionUntil,
fullVersionDebts: familyEntryUnsafe.fullVersionDebts,
}
return familyEntry
}