feat(integration-worker): worker release channelTag stable/beta/prerelease
Persist and gossip channelTag on worker release hints. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -11,7 +11,9 @@ const {
|
||||
isVersionGreater,
|
||||
parseVersionParts,
|
||||
buildVersionDiff,
|
||||
validateWorkerReleaseVersion
|
||||
validateWorkerReleaseVersion,
|
||||
WORKER_CHANNEL_TAGS,
|
||||
normalizeWorkerChannelTag
|
||||
} = require('./release-hint')
|
||||
const { buildWorkerInstallPlan } = require('./install-plan')
|
||||
|
||||
@@ -25,5 +27,7 @@ module.exports = {
|
||||
isVersionGreater,
|
||||
parseVersionParts,
|
||||
buildVersionDiff,
|
||||
validateWorkerReleaseVersion
|
||||
validateWorkerReleaseVersion,
|
||||
WORKER_CHANNEL_TAGS,
|
||||
normalizeWorkerChannelTag
|
||||
}
|
||||
|
||||
+13
-1
@@ -5,6 +5,12 @@ const { JsonStore } = require('pearcord-db/store-json')
|
||||
const { now } = require('pearcord-shared')
|
||||
|
||||
const HINT_COLLECTION = '@pearcord/worker-release-hint'
|
||||
const WORKER_CHANNEL_TAGS = ['stable', 'beta', 'prerelease']
|
||||
|
||||
function normalizeWorkerChannelTag (tag) {
|
||||
const t = String(tag || 'stable').toLowerCase()
|
||||
return WORKER_CHANNEL_TAGS.includes(t) ? t : 'stable'
|
||||
}
|
||||
|
||||
function parseVersionParts (version) {
|
||||
return String(version || '0')
|
||||
@@ -123,18 +129,20 @@ class WorkerReleaseHintStore {
|
||||
workerVersion: String(row.workerVersion),
|
||||
pearUri: row.pearUri || null,
|
||||
releaseNotes: row.releaseNotes || null,
|
||||
channelTag: normalizeWorkerChannelTag(row.channelTag),
|
||||
publishedAt: row.publishedAt || 0,
|
||||
publishedBy: row.publishedBy || null
|
||||
}
|
||||
}
|
||||
|
||||
async setHint ({ guildId, workerVersion, pearUri, publishedBy, releaseNotes }) {
|
||||
async setHint ({ guildId, workerVersion, pearUri, publishedBy, releaseNotes, channelTag }) {
|
||||
if (!guildId || !workerVersion) return null
|
||||
const row = {
|
||||
guildId,
|
||||
workerVersion: String(workerVersion).slice(0, 32),
|
||||
pearUri: pearUri ? String(pearUri).slice(0, 200) : null,
|
||||
releaseNotes: releaseNotes ? String(releaseNotes).slice(0, 480) : null,
|
||||
channelTag: normalizeWorkerChannelTag(channelTag),
|
||||
publishedBy: publishedBy || null,
|
||||
publishedAt: now()
|
||||
}
|
||||
@@ -154,6 +162,7 @@ class WorkerReleaseHintStore {
|
||||
releaseNotes: payload.releaseNotes
|
||||
? String(payload.releaseNotes).slice(0, 480)
|
||||
: null,
|
||||
channelTag: normalizeWorkerChannelTag(payload.channelTag),
|
||||
publishedBy: payload.publishedBy || null,
|
||||
publishedAt: remoteAt || now()
|
||||
})
|
||||
@@ -180,6 +189,7 @@ class WorkerReleaseHintStore {
|
||||
remoteVersion: remote.workerVersion,
|
||||
pearUri: remote.pearUri,
|
||||
releaseNotes: remote.releaseNotes || null,
|
||||
channelTag: remote.channelTag || 'stable',
|
||||
publishedAt: remote.publishedAt,
|
||||
publishedBy: remote.publishedBy,
|
||||
updateAvailable,
|
||||
@@ -192,6 +202,8 @@ class WorkerReleaseHintStore {
|
||||
module.exports = {
|
||||
WorkerReleaseHintStore,
|
||||
HINT_COLLECTION,
|
||||
WORKER_CHANNEL_TAGS,
|
||||
normalizeWorkerChannelTag,
|
||||
isVersionGreater,
|
||||
parseVersionParts,
|
||||
buildVersionDiff,
|
||||
|
||||
Reference in New Issue
Block a user