Restore durable log ingest and typed plugin projections

This commit is contained in:
npc0-hue
2026-09-02 10:20:30 +08:00
parent 40ac46ba17
commit 6018d8f0fc
61 changed files with 809 additions and 3157 deletions
@@ -64,7 +64,7 @@ func (svc *CoreService) applyPluginBulkProjection(instance domain.ServerInstance
func pluginBulkProjectionValues(fixedValues map[string]string, stamp time.Time, row map[string]any, observedAtField string) map[string]any {
value := make(map[string]any, len(fixedValues)+1)
for key, fixed := range fixedValues {
value[key] = renderPluginValueTemplate(fixed, row)
value[key] = renderQueryProjectionTemplate(fixed, row)
}
if observedAtField != "" {
value[observedAtField] = stamp.UTC().Format(time.RFC3339Nano)
@@ -78,18 +78,10 @@ func pluginBulkActivityValue(target domain.GameClientBridgeBulkActivityTargetDec
value[destination] = row[source]
}
for key, fixed := range target.FixedValues {
value[key] = renderPluginValueTemplate(fixed, row)
value[key] = renderQueryProjectionTemplate(fixed, row)
}
if target.ObservedAtField != "" {
value[target.ObservedAtField] = stamp.UTC().Format(time.RFC3339Nano)
}
return value
}
func renderPluginValueTemplate(template string, row map[string]any) string {
result := template
for key, value := range row {
result = strings.ReplaceAll(result, "{{"+key+"}}", fmt.Sprint(value))
}
return result
}