Exemplo n.º 1
0
        public Schema DeleteField(long fieldId)
        {
            if (!FieldsById.TryGetValue(fieldId, out var field))
            {
                return(this);
            }

            return(Clone(clone =>
            {
                clone.fieldsOrdered = fieldsOrdered.Remove(field);
            }));
        }
Exemplo n.º 2
0
        public Schema DeleteField(long fieldId)
        {
            if (!FieldsById.TryGetValue(fieldId, out var field))
            {
                return(this);
            }

            return(Clone(clone =>
            {
                clone.fields = fields.Remove(fieldId);
                clone.fieldsInLists = fieldsInLists.Remove(field.Name);
                clone.fieldsInReferences = fieldsInReferences.Remove(field.Name);
            }));
        }
Exemplo n.º 3
0
        public Schema UpdateField(long fieldId, Func <Field, Field> updater)
        {
            Guard.NotNull(updater, nameof(updater));

            if (!FieldsById.TryGetValue(fieldId, out var field))
            {
                return(this);
            }

            return(Clone(clone =>
            {
                clone.fieldsOrdered = clone.fieldsOrdered.Replace(field, updater(field));
            }));
        }
Exemplo n.º 4
0
        public Schema AddField(Field field)
        {
            Guard.NotNull(field, nameof(field));

            if (FieldsByName.ContainsKey(field.Name) || FieldsById.ContainsKey(field.Id))
            {
                throw new ArgumentException($"A field with name '{field.Name}' and id {field.Id} already exists.", nameof(field));
            }

            return(Clone(clone =>
            {
                clone.fieldsOrdered = clone.fieldsOrdered.Add(field);
            }));
        }
Exemplo n.º 5
0
        public Schema ReorderFields(List <long> ids)
        {
            Guard.NotNull(ids, nameof(ids));

            if (ids.Count != fieldsOrdered.Length || ids.Any(x => !FieldsById.ContainsKey(x)))
            {
                throw new ArgumentException("Ids must cover all fields.", nameof(ids));
            }

            return(Clone(clone =>
            {
                clone.fieldsOrdered = fieldsOrdered.OrderBy(f => ids.IndexOf(f.Id)).ToImmutableArray();
            }));
        }