smc-hub
Version:
CoCalc: Backend webserver component
42 lines (36 loc) • 1.15 kB
text/typescript
/*
* This file is part of CoCalc: Copyright © 2020 Sagemath, Inc.
* License: AGPLv3 s.t. "Commons Clause" – see LICENSE.md for details
*/
/*
Functionality related to running cocalc in personal mode.
*/
import { PostgreSQL } from "./types";
import { reuseInFlight } from "async-await-utils/hof";
import { uuid } from "smc-util/misc";
async function _get_personal_user(database: PostgreSQL): Promise<string> {
// Get account_id of the one and only user, or if there is no user, create one and return its account_id.
const result = await database.async_query({
query:
"SELECT account_id FROM accounts WHERE created is not NULL ORDER BY created LIMIT 1",
});
for (const row of result.rows) {
return row.account_id;
}
// No results, so create THE account.
const account_id = uuid();
await database.async_query({
query: "INSERT INTO accounts",
values: {
account_id,
first_name: "Your",
last_name: "Name",
created: new Date(),
groups: ["admin"],
},
});
return account_id;
}
export const get_personal_user = reuseInFlight(_get_personal_user, {
createKey: () => "",
});