Changeset View
Changeset View
Standalone View
Standalone View
keyserver/src/database/setup-db.js
// @flow | // @flow | ||||
import ashoat from 'lib/facts/ashoat.js'; | import ashoat from 'lib/facts/ashoat.js'; | ||||
import bots from 'lib/facts/bots.js'; | import bots from 'lib/facts/bots.js'; | ||||
import genesis from 'lib/facts/genesis.js'; | import genesis from 'lib/facts/genesis.js'; | ||||
import { usernameMaxLength } from 'lib/shared/account-utils.js'; | import { usernameMaxLength } from 'lib/shared/account-utils.js'; | ||||
import { sortIDs } from 'lib/shared/relationship-utils.js'; | import { sortIDs } from 'lib/shared/relationship-utils.js'; | ||||
import { undirectedStatus } from 'lib/types/relationship-types.js'; | import { undirectedStatus } from 'lib/types/relationship-types.js'; | ||||
import { threadTypes } from 'lib/types/thread-types.js'; | import { threadTypes } from 'lib/types/thread-types.js'; | ||||
import { createThread } from '../creators/thread-creator.js'; | import { createThread } from '../creators/thread-creator.js'; | ||||
import { dbQuery, SQL } from '../database/database.js'; | import { dbQuery, SQL } from '../database/database.js'; | ||||
import { updateDBVersion } from '../database/db-version.js'; | import { updateDBVersion } from '../database/db-version.js'; | ||||
import { newDatabaseVersion } from '../database/migration-config.js'; | import { newDatabaseVersion } from '../database/migration-config.js'; | ||||
import { createScriptViewer } from '../session/scripts.js'; | import { createScriptViewer } from '../session/scripts.js'; | ||||
import { createPickledOlmAccount } from '../utils/olm-utils.js'; | |||||
async function setupDB() { | async function setupDB() { | ||||
await createTables(); | await createTables(); | ||||
await createUsers(); | await createUsers(); | ||||
await createThreads(); | await createThreads(); | ||||
await setUpMetadataTable(); | await setUpMetadataTable(); | ||||
await createOlmAccounts(); | |||||
} | } | ||||
async function createTables() { | async function createTables() { | ||||
await dbQuery( | await dbQuery( | ||||
SQL` | SQL` | ||||
CREATE TABLE cookies ( | CREATE TABLE cookies ( | ||||
id bigint(20) NOT NULL, | id bigint(20) NOT NULL, | ||||
hash char(60) NOT NULL, | hash char(60) NOT NULL, | ||||
▲ Show 20 Lines • Show All 439 Lines • ▼ Show 20 Lines | await createThread( | ||||
createThreadOptions, | createThreadOptions, | ||||
); | ); | ||||
} | } | ||||
async function setUpMetadataTable() { | async function setUpMetadataTable() { | ||||
await updateDBVersion(newDatabaseVersion); | await updateDBVersion(newDatabaseVersion); | ||||
} | } | ||||
async function createOlmAccounts() { | |||||
const [pickledContentAccount, pickledNotificationsAccount] = | |||||
await Promise.all([createPickledOlmAccount(), createPickledOlmAccount()]); | |||||
await dbQuery( | |||||
SQL` | |||||
INSERT INTO olm_accounts (is_content, version, | |||||
pickling_key, pickled_olm_account) | |||||
VALUES | |||||
( | |||||
TRUE, | |||||
0, | |||||
${pickledContentAccount.picklingKey}, | |||||
${pickledContentAccount.pickledAccount} | |||||
), | |||||
( | |||||
FALSE, | |||||
0, | |||||
${pickledNotificationsAccount.picklingKey}, | |||||
${pickledNotificationsAccount.pickledAccount} | |||||
); | |||||
`, | |||||
); | |||||
} | |||||
export { setupDB }; | export { setupDB }; |