From cabdc60e27915224e82b71e8cc3aa55cbedfda6c Mon Sep 17 00:00:00 2001 From: sk1982 Date: Sun, 7 Apr 2024 06:44:38 -0400 Subject: [PATCH] fix: create actaeon user ext before teams --- src/data/team.ts | 4 +++- src/data/user.ts | 19 +++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/data/team.ts b/src/data/team.ts index 6abb8bc..c10acf8 100644 --- a/src/data/team.ts +++ b/src/data/team.ts @@ -1,7 +1,7 @@ import { GeneratedDB, db } from '@/db'; import { JoinPrivacy, Visibility } from '@/types/privacy-visibility'; import crypto from 'crypto'; -import { userIsVisible, withUsersVisibleTo } from './user'; +import { createActaeonUsersFromExistingUsers, userIsVisible, withUsersVisibleTo } from './user'; import { Transaction } from 'kysely'; import { UserPayload } from '@/types/user'; import { hasPermission } from '@/helpers/permissions'; @@ -38,6 +38,8 @@ export const createActaeonTeamsFromExistingTeams = async () => { .values(insertValues) .executeTakeFirst(); + await createActaeonUsersFromExistingUsers(trx).catch(console.error); + for (const val of insertValues) { await trx.updateTable('actaeon_user_ext') .where('userId', '=', val.owner) diff --git a/src/data/user.ts b/src/data/user.ts index 1feae0d..0f59be5 100644 --- a/src/data/user.ts +++ b/src/data/user.ts @@ -1,8 +1,8 @@ import { UserPayload, UserVisibility } from '@/types/user'; import { hasPermission } from '@/helpers/permissions'; import { UserPermissions } from '@/types/permissions'; -import { sql } from 'kysely'; -import { db } from '@/db'; +import { Kysely, Transaction, sql } from 'kysely'; +import { GeneratedDB, db } from '@/db'; import { jsonObjectArray } from '@/types/json-object-array'; import { parseJsonResult } from '@/helpers/parse-json-result'; import { getUser } from '@/actions/auth'; @@ -93,3 +93,18 @@ export const getUsers = async () => { }; export type AdminUser = Awaited>[number]; + +export const createActaeonUsersFromExistingUsers = async (builder: Transaction | Kysely) => { + await builder.insertInto('actaeon_user_ext') + .columns(['uuid', 'visibility', 'userId']) + .expression(eb => eb.selectFrom('aime_user') + .where(({ not, exists, selectFrom }) => not(exists(selectFrom('actaeon_user_ext') + .whereRef('actaeon_user_ext.userId', '=', 'aime_user.id') + .select('aime_user.id')))) + .select(({ fn, lit }) => [ + fn('uuid_v4').as('uuid'), + lit(0).as('visibility'), + 'aime_user.id as userId' + ])) + .execute(); +};