Example #1
0
 private TableModel(
     EntityName tableName,
     IEnumerable <ColumnModel> columns,
     IEnumerable <MappingModel> mappings,
     AlterAutoDeletePolicyCommand?autoDeletePolicy,
     AlterCachingPolicyCommand?cachingPolicy,
     AlterIngestionBatchingPolicyCommand?ingestionBatchingPolicy,
     AlterMergePolicyCommand?mergePolicy,
     AlterRetentionPolicyCommand?retentionPolicy,
     AlterShardingPolicyCommand?shardingPolicy,
     AlterUpdatePolicyCommand?updatePolicy,
     QuotedText folder,
     QuotedText docString)
 {
     TableName = tableName;
     Columns   = columns.ToImmutableArray();
     Mappings  = mappings
                 .OrderBy(m => m.MappingName)
                 .ThenBy(m => m.MappingKind)
                 .ToImmutableArray();
     AutoDeletePolicy        = autoDeletePolicy;
     CachingPolicy           = cachingPolicy;
     IngestionBatchingPolicy = ingestionBatchingPolicy;
     MergePolicy             = mergePolicy;
     RetentionPolicy         = retentionPolicy;
     ShardingPolicy          = shardingPolicy;
     UpdatePolicy            = updatePolicy;
     Folder    = folder;
     DocString = docString;
 }
        internal static CommandBase FromCode(SyntaxElement rootElement)
        {
            var entityKinds = rootElement
                              .GetDescendants <SyntaxElement>(s => s.Kind == SyntaxKind.TableKeyword ||
                                                              s.Kind == SyntaxKind.DatabaseKeyword)
                              .Select(s => s.Kind);

            if (!entityKinds.Any())
            {
                throw new DeltaException("Alter retention policy requires to act on a table or database (cluster isn't supported)");
            }
            var entityKind = entityKinds.First();
            var entityType = entityKind == SyntaxKind.TableKeyword
                ? EntityType.Table
                : EntityType.Database;
            var entityName = rootElement.GetDescendants <NameReference>().Last();
            var policyText = QuotedText.FromLiteral(
                rootElement.GetUniqueDescendant <LiteralExpression>(
                    "RetentionPolicy",
                    e => e.NameInParent == "RetentionPolicy"));
            var policy = Deserialize <JsonDocument>(policyText.Text);

            if (policy == null)
            {
                throw new DeltaException(
                          $"Can't extract policy objects from {policyText.ToScript()}");
            }

            return(new AlterRetentionPolicyCommand(
                       entityType,
                       EntityName.FromCode(entityName.Name),
                       policy));
        }
Example #3
0
        internal static CommandBase FromCode(SyntaxElement rootElement)
        {
            var cleanTableName = rootElement
                                 .GetDescendants <TokenName>(e => e.NameInParent == "Name")
                                 .FirstOrDefault();
            var tableName = rootElement.GetDescendants <NameReference>().Last();

            if ((cleanTableName == null || cleanTableName.Name.Text == string.Empty) &&
                tableName == null)
            {
                throw new DeltaException("Can't find table name");
            }

            var policiesText = QuotedText.FromLiteral(
                rootElement.GetUniqueDescendant <LiteralExpression>(
                    "UpdatePolicy",
                    e => e.NameInParent == "UpdatePolicy"));
            var policies = Deserialize <UpdatePolicy[]>(policiesText.Text);

            if (policies == null)
            {
                throw new DeltaException(
                          $"Can't extract policy objects from {policiesText.ToScript()}");
            }

            return(new AlterUpdatePolicyCommand(
                       EntityName.FromCode(tableName.Name),
                       policies));
        }
Example #4
0
 public MappingModel(
     QuotedText mappingName,
     string mappingKind,
     QuotedText mappingAsJson)
 {
     MappingName   = mappingName;
     MappingKind   = mappingKind.ToLower();
     MappingAsJson = mappingAsJson;
 }
Example #5
0
        private bool MappingAsJsonEquals(QuotedText otherMappingAsJson)
        {
            var thisElements = JsonSerializer
                               .Deserialize <MappingElement[]>(MappingAsJson.Text, _jsonSerializerOptions)
                               !.Select(e => e.ToNormalize())
                               .OrderBy(e => e.Column);
            var otherElements = JsonSerializer
                                .Deserialize <MappingElement[]>(otherMappingAsJson.Text, _jsonSerializerOptions)
                                !.Select(e => e.ToNormalize())
                                .OrderBy(e => e.Column);

            return(thisElements.SequenceEqual(otherElements));
        }
Example #6
0
        internal static CommandBase FromCode(SyntaxElement rootElement)
        {
            var tableName  = rootElement.GetDescendants <NameReference>().Last();
            var policyText = QuotedText.FromLiteral(
                rootElement.GetUniqueDescendant <LiteralExpression>(
                    "AutoDeletePolicy",
                    e => e.NameInParent == "AutoDeletePolicy"));
            var policy = Deserialize <JsonDocument>(policyText.Text);

            if (policy == null)
            {
                throw new DeltaException(
                          $"Can't extract policy objects from {policyText.ToScript()}");
            }

            return(new AlterAutoDeletePolicyCommand(EntityName.FromCode(tableName.Name), policy));
        }
        internal static CommandBase FromCode(SyntaxElement rootElement)
        {
            var tableNames = rootElement
                             .GetDescendants <SyntaxElement>(n => n.NameInParent == "Name"
                             //  Different type depending if it's a simple name or not
                                                             && (n is TokenName || n is LiteralExpression))
                             //.GetDescendants<LiteralExpression>(n => n.NameInParent == "Name")
                             //.GetDescendants<TokenName>(n => n.NameInParent == "Name")
                             .Select(t => EntityName.FromCode(t));
            var policyText = QuotedText.FromLiteral(
                rootElement.GetUniqueDescendant <LiteralExpression>(
                    "RetentionPolicy",
                    e => e.NameInParent == "RetentionPolicy"));
            var policy = Deserialize <JsonDocument>(policyText.Text);

            if (policy == null)
            {
                throw new DeltaException(
                          $"Can't extract policy objects from {policyText.ToScript()}");
            }

            return(new AlterTablesRetentionPolicyCommand(tableNames, policy));
        }