public QueryDescriptor(string queryName, Type queryModel, QueryModelAttribute attribute, ModelDescriptor modelDescriptor) { if (string.IsNullOrEmpty(queryName)) { throw new ArgumentException($"{nameof(queryName)} is required", nameof(queryName)); } QueryModel = queryModel ?? throw new ArgumentNullException(nameof(queryModel)); if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } ModelDescriptor = modelDescriptor ?? throw new ArgumentNullException(nameof(modelDescriptor)); QueryName = queryName.Trim().ToLower(); SubNames = attribute.SubNames?.Split(Separators, StringSplitOptions.RemoveEmptyEntries).Select(p => p.ToLower().Trim()).ToArray() ?? new string[0]; Init(attribute); }
private void Init(QueryModelAttribute attribute) { Permissions = attribute.Permissions; AcceptQueryRules = attribute.AcceptQueryRules?.Split(Separators, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Trim().ToLower()).ToArray() ?? new string[0]; DefaultQueryRules = attribute.DefaultQueryRules?.Split(Separators, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Trim().ToLower()).ToArray() ?? new string[0]; AcceptActions = attribute.AcceptActions?.Split(Separators, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Trim().ToLower()).ToArray() ?? new string[0]; ExcludeActions = AcceptActions.Length > 0 ? new string[0] : attribute.ExcludeActions?.Split(Separators, StringSplitOptions.RemoveEmptyEntries) .Select(p => p.Trim().ToLower()).ToArray() ?? new string[0]; ReadPolicy = attribute.ReadPolicy; CreatePolicy = attribute.CreatePolicy; UpdatePolicy = attribute.UpdatePolicy; DeletePolicy = attribute.DeletePolicy; if (OnlyOwnerCanRead && string.IsNullOrEmpty(ReadPolicy)) { throw new InspectException($"When {nameof(QueryPermission.OnlyOwnerRead)} is enabled the {nameof(ReadPolicy)} must be required"); } if (OnlyOwnerCanCreate && string.IsNullOrEmpty(CreatePolicy)) { throw new InspectException($"When {nameof(QueryPermission.OnlyOwnerCreate)} is enabled the {nameof(CreatePolicy)} must be required"); } if (OnlyOwnerCanUpdate && string.IsNullOrEmpty(UpdatePolicy)) { throw new InspectException($"When {nameof(QueryPermission.OnlyOwnerUpdate)} is enabled the {nameof(UpdatePolicy)} must be required"); } if (OnlyOwnerCanDelete && string.IsNullOrEmpty(DeletePolicy)) { throw new InspectException($"When {nameof(QueryPermission.OnlyOwnerDelete)} is enabled the {nameof(DeletePolicy)} must be required"); } Validate = attribute.Validate; DefaultOrderBy = attribute.DefaultOrderBy; }