private async Task TransformAsync(ContentScriptVars sharedVars, string script, ContentEntity content, CancellationToken ct) { var vars = new ContentScriptVars { ContentId = content.Id, Data = content.Data, DataOld = default,
public async Task EnrichAsync(Context context, IEnumerable <ContentEntity> contents, ProvideSchema schemas, CancellationToken ct) { if (!ShouldEnrich(context)) { return; } foreach (var group in contents.GroupBy(x => x.SchemaId.Id)) { var(schema, _) = await schemas(group.Key); var script = schema.SchemaDef.Scripts.Query; if (string.IsNullOrWhiteSpace(script)) { continue; } var vars = new ContentScriptVars { AppId = schema.AppId.Id, AppName = schema.AppId.Name, SchemaId = schema.Id, SchemaName = schema.SchemaDef.Name, User = context.User }; var preScript = schema.SchemaDef.Scripts.QueryPre; if (!string.IsNullOrWhiteSpace(preScript)) { var options = new ScriptOptions { AsContext = true }; await scriptEngine.ExecuteAsync(vars, preScript, options, ct); } await AsyncHelper.WhenAllThrottledAsync(group, async (content, _) => { await TransformAsync(vars, script, content, ct); }, ct : ct); } }