Keep artifact list and beta queries free of file bytes
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { getVersionContent } from './scripts.js';
|
||||
import { parseBetaPlan, type BetaPlan } from '../../beta-plan.js';
|
||||
import { storedPlan, testView, activity, setOutcome } from './beta-tests.js';
|
||||
import { archiveBetaRevision, currentBetaRevision } from './beta-revisions.js';
|
||||
@@ -89,7 +90,7 @@ function composeCfgForServer(
|
||||
if (inputs.inBetaBaseline) {
|
||||
const s = getScript(inputs.inBetaBaseline.script_id);
|
||||
if (s && scopeAppliesToServer(s, { game: serverGame, map: serverMap })) {
|
||||
baselineText = inputs.inBetaBaseline.content.toString('utf8');
|
||||
baselineText = getVersionContent(inputs.inBetaBaseline.id).toString('utf8');
|
||||
baselineScriptId = s.id;
|
||||
}
|
||||
}
|
||||
@@ -99,7 +100,7 @@ function composeCfgForServer(
|
||||
if (promoted?.current_version_id) {
|
||||
const ver = getVersion(promoted.current_version_id);
|
||||
if (ver) {
|
||||
baselineText = ver.content.toString('utf8');
|
||||
baselineText = getVersionContent(ver.id).toString('utf8');
|
||||
baselineScriptId = promoted.id;
|
||||
}
|
||||
}
|
||||
@@ -122,7 +123,7 @@ function composeCfgForServer(
|
||||
if (!s.current_version_id) continue;
|
||||
const ver = getVersion(s.current_version_id);
|
||||
if (!ver) continue;
|
||||
promotedOverlays.push({ id: s.id, text: ver.content.toString('utf8') });
|
||||
promotedOverlays.push({ id: s.id, text: getVersionContent(ver.id).toString('utf8') });
|
||||
promotedIdsSeen.add(s.id);
|
||||
}
|
||||
};
|
||||
@@ -132,7 +133,7 @@ function composeCfgForServer(
|
||||
// In-beta overlays scoped to this server.
|
||||
const inBetaScopedOverlays = inputs.inBetaOverlays
|
||||
.filter(({ script }) => scopeAppliesToServer(script, { game: serverGame, map: serverMap }))
|
||||
.map(({ script, version }) => ({ id: script.id, text: version.content.toString('utf8') }));
|
||||
.map(({ script, version }) => ({ id: script.id, text: getVersionContent(version.id).toString('utf8') }));
|
||||
|
||||
const composed = composeServerCfg(baselineText, [...promotedOverlays, ...inBetaScopedOverlays], serverGame, serverMap, getServer(serverName)?.map_slug);
|
||||
return { text: composed, baselineScriptId };
|
||||
@@ -604,7 +605,7 @@ function revisionFileChanges(betaId: number, name: string): Parameters<typeof qu
|
||||
const server = getServer(name)!;
|
||||
const changes: Parameters<typeof queueFileChange>[0][] = resolved.filter(row => !isCollapsingKind(row.script.kind))
|
||||
.map(({ script, version }) => ({ sourceKind: 'beta', sourceId: String(betaId), server: name, kind: script.kind,
|
||||
relPath: script.target_rel_path, content: version.content, scriptVersionId: version.id, inventorySource: `beta:${betaId}` }));
|
||||
relPath: script.target_rel_path, content: getVersionContent(version.id), scriptVersionId: version.id, inventorySource: `beta:${betaId}` }));
|
||||
if (resolved.some(row => isCollapsingKind(row.script.kind))) {
|
||||
const composed = composeCfgForServer(name, server.game, server.map, {
|
||||
inBetaBaseline: resolved.find(row => row.script.kind === 'baseline')?.version,
|
||||
@@ -639,7 +640,7 @@ async function deployBetaServersInternal(betaId: number, names: string[]): Promi
|
||||
await mkdir(archive, { recursive: true });
|
||||
for (const r of nonCollapsing) {
|
||||
const base = posix.basename(r.script.target_rel_path);
|
||||
await writeFile(join(archive, base), r.version.content);
|
||||
await writeFile(join(archive, base), getVersionContent(r.version.id));
|
||||
}
|
||||
|
||||
// Persist the requested bytes without touching any live destination. Provisioning
|
||||
@@ -650,7 +651,7 @@ async function deployBetaServersInternal(betaId: number, names: string[]): Promi
|
||||
try {
|
||||
const changes: Parameters<typeof queueFileChange>[0][] = nonCollapsing.map(({ script, version }) => ({
|
||||
sourceKind: 'beta' as const, sourceId: String(betaId), server: name,
|
||||
kind: script.kind, relPath: script.target_rel_path, content: version.content,
|
||||
kind: script.kind, relPath: script.target_rel_path, content: getVersionContent(version.id),
|
||||
scriptVersionId: version.id, inventorySource: `beta:${betaId}`
|
||||
}));
|
||||
if (collapsingBaseline || collapsingOverlays.length > 0) {
|
||||
@@ -990,7 +991,7 @@ async function promoteBetaInternal(betaId: number, reviewedToken?: string): Prom
|
||||
priorSha = snap.prior_sha256;
|
||||
} else if (bss.prior_version_id) {
|
||||
const pv = getVersion(bss.prior_version_id);
|
||||
if (pv) { priorContent = pv.content; priorSha = pv.sha256; }
|
||||
if (pv) { priorContent = getVersionContent(pv.id); priorSha = pv.sha256; }
|
||||
}
|
||||
plan = {
|
||||
script, version, server: name,
|
||||
@@ -1121,12 +1122,12 @@ async function promoteBetaInternal(betaId: number, reviewedToken?: string): Prom
|
||||
p.priorSha,
|
||||
p.version.sha256,
|
||||
p.priorContent,
|
||||
p.version.content,
|
||||
getVersionContent(p.version.id),
|
||||
betaServerSet.has(p.server) ? 0 : 1
|
||||
);
|
||||
if (plansToActivate.has(p)) {
|
||||
queueFileChange({ sourceKind: 'campaign', sourceId: depId, server: p.server,
|
||||
kind: p.script.kind, relPath: p.script.target_rel_path, content: p.version.content,
|
||||
kind: p.script.kind, relPath: p.script.target_rel_path, content: getVersionContent(p.version.id),
|
||||
scriptVersionId: p.version.id, inventorySource: `promote:${depId}`,
|
||||
deploymentFileId: Number(file.lastInsertRowid), preserveBeforeImage: betaServerSet.has(p.server) });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user