Exemple #1
0
 private async Task TransformAsync(ContentScriptVars sharedVars, string script, ContentEntity content,
                                   CancellationToken ct)
 {
     var vars = new ContentScriptVars
     {
         ContentId = content.Id,
         Data      = content.Data,
         DataOld   = default,
Exemple #2
0
        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);
            }
        }