ops: align production ETL with legacy admin source
This commit is contained in:
@@ -392,10 +392,9 @@ async function readSourceUsers(source, sourceAuthSchema, activeAdminUserIds) {
|
||||
);
|
||||
}
|
||||
|
||||
async function readActiveAdminUserIds(source, sourceTables) {
|
||||
if (!sourceTables.has("admin_users")) {
|
||||
throw new SafeProductionMigrationError("source public.admin_users is missing");
|
||||
}
|
||||
export async function readActiveAdminUserIds(source, sourceTables, ownerUserId) {
|
||||
// Legacy production used a single ADMIN_EMAILS allowlist and has no admin tables.
|
||||
if (!sourceTables.has("admin_users")) return new Set([ownerUserId]);
|
||||
const result = await source.query(
|
||||
"select user_id from public.admin_users where revoked_at is null order by user_id",
|
||||
);
|
||||
@@ -442,6 +441,7 @@ async function assertNoUnmappedSourceTables(source, sourceTables, targetTables)
|
||||
}
|
||||
|
||||
async function assertActiveAdminRoles(source, sourceTables, ownerUserId) {
|
||||
if (!sourceTables.has("admin_users")) return;
|
||||
if (!sourceTables.has("admin_user_roles") || !sourceTables.has("admin_roles")) {
|
||||
const result = await source.query(
|
||||
`select count(*)::bigint as count from public.admin_users where revoked_at is null and user_id <> $1`,
|
||||
@@ -715,7 +715,7 @@ async function preflightContext(source, target, config, { requireEmpty = true }
|
||||
readSchema(source, "auth"),
|
||||
readSchema(target, "public"),
|
||||
]);
|
||||
const activeAdminUserIds = await readActiveAdminUserIds(source, sourcePublic);
|
||||
const activeAdminUserIds = await readActiveAdminUserIds(source, sourcePublic, config.ownerUserId);
|
||||
const users = await readSourceUsers(source, sourceAuth, activeAdminUserIds);
|
||||
assertActiveAdminUsers(users, activeAdminUserIds, config.ownerUserId);
|
||||
if (requireEmpty) await assertTargetEmpty(target, targetPublic);
|
||||
|
||||
Reference in New Issue
Block a user