fix(machines): hydrate company name without slug flash
This commit is contained in:
parent
20a5c902bc
commit
c35eb673d3
2 changed files with 63 additions and 18 deletions
|
|
@ -740,6 +740,20 @@ export const listByTenant = query({
|
|||
const includeMetadata = Boolean(args.includeMetadata)
|
||||
const now = Date.now()
|
||||
|
||||
const tenantCompanies = await ctx.db
|
||||
.query("companies")
|
||||
.withIndex("by_tenant", (q) => q.eq("tenantId", tenantId))
|
||||
.collect()
|
||||
|
||||
const companyById = new Map<string, typeof tenantCompanies[number]>()
|
||||
const companyBySlug = new Map<string, typeof tenantCompanies[number]>()
|
||||
for (const company of tenantCompanies) {
|
||||
companyById.set(company._id, company)
|
||||
if (company.slug) {
|
||||
companyBySlug.set(company.slug, company)
|
||||
}
|
||||
}
|
||||
|
||||
const machines = await ctx.db
|
||||
.query("machines")
|
||||
.withIndex("by_tenant", (q) => q.eq("tenantId", tenantId))
|
||||
|
|
@ -807,12 +821,17 @@ export const listByTenant = query({
|
|||
})
|
||||
).then((arr) => arr.filter(Boolean) as Array<{ id: string; email: string; name: string }>)
|
||||
|
||||
const companyFromId = machine.companyId ? companyById.get(machine.companyId) ?? null : null
|
||||
const companyFromSlug = machine.companySlug ? companyBySlug.get(machine.companySlug) ?? null : null
|
||||
const resolvedCompany = companyFromId ?? companyFromSlug
|
||||
|
||||
return {
|
||||
id: machine._id,
|
||||
tenantId: machine.tenantId,
|
||||
hostname: machine.hostname,
|
||||
companyId: machine.companyId ?? null,
|
||||
companySlug: machine.companySlug ?? null,
|
||||
companySlug: machine.companySlug ?? companyFromId?.slug ?? companyFromSlug?.slug ?? null,
|
||||
companyName: resolvedCompany?.name ?? null,
|
||||
osName: machine.osName,
|
||||
osVersion: machine.osVersion ?? null,
|
||||
architecture: machine.architecture ?? null,
|
||||
|
|
@ -862,6 +881,17 @@ export const getById = query({
|
|||
const machine = await ctx.db.get(args.id)
|
||||
if (!machine) return null
|
||||
|
||||
const companyFromId = machine.companyId ? await ctx.db.get(machine.companyId) : null
|
||||
const machineSlug = machine.companySlug ?? null
|
||||
let companyFromSlug: typeof companyFromId | null = null
|
||||
if (!companyFromId && machineSlug) {
|
||||
companyFromSlug = await ctx.db
|
||||
.query("companies")
|
||||
.withIndex("by_tenant_slug", (q) => q.eq("tenantId", machine.tenantId).eq("slug", machineSlug))
|
||||
.unique()
|
||||
}
|
||||
const resolvedCompany = companyFromId ?? companyFromSlug
|
||||
|
||||
const tokens = await ctx.db
|
||||
.query("machineTokens")
|
||||
.withIndex("by_machine", (q) => q.eq("machineId", machine._id))
|
||||
|
|
@ -925,7 +955,8 @@ export const getById = query({
|
|||
tenantId: machine.tenantId,
|
||||
hostname: machine.hostname,
|
||||
companyId: machine.companyId ?? null,
|
||||
companySlug: machine.companySlug ?? null,
|
||||
companySlug: machine.companySlug ?? resolvedCompany?.slug ?? null,
|
||||
companyName: resolvedCompany?.name ?? null,
|
||||
osName: machine.osName,
|
||||
osVersion: machine.osVersion ?? null,
|
||||
architecture: machine.architecture ?? null,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue