Skip to content

Commit 5194d4e

Browse files
authored
Refactor admin seeding: remove user mutation in ensureOrganizationExists and return Organization/Project values (#1746)
Part of OPS-3216, OPS-3009.
1 parent 4da41ca commit 5194d4e

1 file changed

Lines changed: 31 additions & 13 deletions

File tree

packages/server/api/src/app/database/seeds/seed-admin.ts

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ import {
33
resetUserPassword,
44
} from '@openops/common';
55
import { AppSystemProp, logger, system } from '@openops/server-shared';
6-
import { OrganizationRole, Provider, User } from '@openops/shared';
6+
import {
7+
Organization,
8+
OrganizationRole,
9+
Project,
10+
Provider,
11+
User,
12+
} from '@openops/shared';
713
import { authenticationService } from '../../authentication/basic/authentication-service';
814
import { openopsTables } from '../../openops-tables';
915
import { authenticateAdminUserInOpenOpsTables } from '../../openops-tables/auth-admin-tables';
@@ -27,9 +33,19 @@ export const upsertAdminUser = async (): Promise<void> => {
2733
const { workspaceId, databaseId, databaseToken } =
2834
await ensureOpenOpsTablesWorkspaceAndDatabaseExist();
2935

30-
await ensureOrganizationExists(user);
36+
const organization = await ensureOrganizationExists(user);
37+
38+
const userWithOrganization = {
39+
...user,
40+
organizationId: organization.id,
41+
};
3142

32-
await ensureProjectExists(user, databaseId, workspaceId, databaseToken);
43+
await ensureProjectExists(
44+
userWithOrganization,
45+
databaseId,
46+
workspaceId,
47+
databaseToken,
48+
);
3349
}
3450
};
3551

@@ -107,7 +123,7 @@ async function ensureOpenOpsTablesWorkspaceAndDatabaseExist(): Promise<{
107123
return { workspaceId, databaseId, databaseToken };
108124
}
109125

110-
async function ensureOrganizationExists(user: User): Promise<void> {
126+
async function ensureOrganizationExists(user: User): Promise<Organization> {
111127
if (user.organizationId) {
112128
const existingOrganization = await organizationService.getOne(
113129
user.organizationId,
@@ -119,23 +135,25 @@ async function ensureOrganizationExists(user: User): Promise<void> {
119135
);
120136
}
121137

122-
return;
138+
return existingOrganization;
123139
}
124140

125-
const organization = await organizationService.create({
141+
return organizationService.create({
126142
ownerId: user.id,
127143
name: DEFAULT_ORGANIZATION_NAME,
128144
});
129-
130-
user.organizationId = organization.id;
131145
}
132146

147+
type UserWithOrganization = User & {
148+
organizationId: string;
149+
};
150+
133151
async function ensureProjectExists(
134-
user: User,
152+
user: UserWithOrganization,
135153
databaseId: number,
136154
workspaceId: number,
137155
databaseToken: string,
138-
): Promise<void> {
156+
): Promise<Project> {
139157
const project = await projectService.getOneForUser(user);
140158
if (project) {
141159
if (project.tablesDatabaseId !== databaseId) {
@@ -150,13 +168,13 @@ async function ensureProjectExists(
150168
);
151169
}
152170

153-
return;
171+
return project;
154172
}
155173

156-
await projectService.create({
174+
return projectService.create({
157175
displayName: `${user.firstName}'s Project`,
158176
ownerId: user.id,
159-
organizationId: user.organizationId!,
177+
organizationId: user.organizationId,
160178
tablesDatabaseId: databaseId,
161179
tablesWorkspaceId: workspaceId,
162180
tablesDatabaseToken: databaseToken,

0 commit comments

Comments
 (0)