UNPKG

smc-hub

Version:

CoCalc: Backend webserver component

44 lines (38 loc) 1.22 kB
/* * This file is part of CoCalc: Copyright © 2020 Sagemath, Inc. * License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details */ import { PostgreSQL } from "./types"; import { is_valid_uuid_string } from "smc-util/misc"; import { callback2 } from "smc-util/async-utils"; export async function record_user_tracking( db: PostgreSQL, account_id: string, event: string, value: { [key: string]: any } ): Promise<void> { /* Right now this function is called from outside typescript (e.g., api from user), so we have to do extra type checking. Also, the input is uuid's, which typescript can't check. */ if (!is_valid_uuid_string(account_id)) { throw Error("invalid account_id"); } if (event == null || event.length == 0) { throw Error("evt must be specified"); } if (event.length > 80) { throw Error("event must have length at most 80"); } if (value == null) { throw Error("value must be specified"); } await callback2(db._query, { query: "INSERT INTO user_tracking", values: { "account_id :: UUID": account_id, "time :: TIMESTAMP": "NOW()", "event :: TEXT": event, "value :: JSONB": value, }, }); }