/// <summary> /// get query fields /// </summary> /// <param name="entityType">entity type</param> /// <param name="query">query</param> /// <returns></returns> public static List <EntityField> GetQueryFields(ServerType serverType, Type entityType, IQuery query) { string key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(new List <EntityField>(0)); } entityServerTypeCacheQueryFields.TryGetValue(key, out var fields); if (fields.IsNullOrEmpty()) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheQueryFields.TryGetValue(key, out fields); } if (fields.IsNullOrEmpty()) { throw new Exception("empty fields"); } if (query.QueryFields.IsNullOrEmpty() && query.NotQueryFields.IsNullOrEmpty()) { return(fields); } var queryFields = query.GetActuallyQueryFields(entityType, true, true); return(fields.Intersect(queryFields).ToList()); }
/// <summary> /// get fields /// </summary> /// <param name="serverType">server type</param> /// <param name="entityType">entity type</param> /// <param name="propertyNames">property name</param> /// <returns></returns> public static List <EntityField> GetFields(ServerType serverType, Type entityType, IEnumerable <string> propertyNames) { if (propertyNames.IsNullOrEmpty()) { return(new List <EntityField>(0)); } var propertyFields = propertyNames.Select <string, EntityField>(p => p).ToList(); var key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(propertyFields); } entityServerTypeCacheFields.TryGetValue(key, out var allFields); if (allFields.IsNullOrEmpty()) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheFields.TryGetValue(key, out allFields); if (allFields.IsNullOrEmpty()) { return(propertyFields); } } for (var p = 0; p < propertyFields.Count; p++) { var propertyField = propertyFields[p]; if (allFields.TryGetValue(propertyField.PropertyName, out var nowField) && nowField != null) { propertyFields[p] = nowField; } } return(propertyFields); }
/// <summary> /// config entity fields to server type /// </summary> /// <param name="serverType">server type</param> /// <param name="entityType">entity type</param> /// <param name="fields">fields</param> /// <param name="cover">conver</param> public static void ConfigEntityFieldsToServerType(ServerType serverType, Type entityType, IEnumerable <EntityField> fields, bool cover = true) { if (entityType == null) { return; } var key = serverType.GetServerTypeAndEntityKey(entityType); ConfigEntityFieldsToServerType(key, entityType, fields, cover); }
/// <summary> /// config entity object name to server type /// </summary> /// <param name="serverType">server type</param> /// <param name="entityType">entity type</param> /// <param name="objectName">object name</param> /// <param name="cover">cover now object name</param> public static void ConfigEntityObjectNameToServerType(ServerType serverType, Type entityType, string objectName, bool cover = true) { if (entityType == null) { return; } var key = serverType.GetServerTypeAndEntityKey(entityType); ConfigEntityObjectNameToServerType(key, objectName, cover); }
/// <summary> /// get edit fields /// </summary> /// <param name="entityType">entity type</param> /// <returns></returns> public static List <EntityField> GetEditFields(ServerType serverType, Type entityType) { string key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(new List <EntityField>(0)); } entityServerTypeCacheEditFields.TryGetValue(key, out var fields); if (fields.IsNullOrEmpty()) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheEditFields.TryGetValue(key, out fields); } return(fields ?? new List <EntityField>(0)); }
/// <summary> ///get entity object name /// </summary> /// <param name="serverType">server type</param> /// <param name="entityType">entity type</param> /// <param name="searchEntityConfig">search entity config</param> /// <returns></returns> public static string GetEntityObjectName(ServerType serverType, Type entityType, string defaultName = "") { string key = serverType.GetServerTypeAndEntityKey(entityType); if (string.IsNullOrWhiteSpace(key)) { return(defaultName); } entityServerTypeCacheObjectNames.TryGetValue(key, out var cacheObjectName); if (string.IsNullOrWhiteSpace(cacheObjectName)) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheObjectNames.TryGetValue(key, out cacheObjectName); cacheObjectName = string.IsNullOrWhiteSpace(cacheObjectName) ? defaultName : cacheObjectName; } return(cacheObjectName ?? string.Empty); }
/// <summary> /// config server type entity /// </summary> /// <param name="serverType">server type</param> /// <param name="entityType">entity type id</param> /// <param name="entityConfig">entity config</param> static void ConfigServerTypeEntity(ServerType serverType, Type entityType, ServerTypeEntityConfig entityConfig, bool cover = true) { if (entityConfig == null) { return; } string key = serverType.GetServerTypeAndEntityKey(entityType); if (string.IsNullOrWhiteSpace(key)) { return; } //config object name ConfigEntityObjectNameToServerType(key, entityConfig.TableName, cover); //config fields ConfigEntityFieldsToServerType(key, entityType, entityConfig.Fields, cover); }
/// <summary> /// get query fields /// </summary> /// <param name="entityType">entity type</param> /// <param name="query">query</param> /// <returns></returns> public static List <EntityField> GetQueryFields(ServerType serverType, Type entityType, IQuery query) { string key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(new List <EntityField>(0)); } entityServerTypeCacheQueryFields.TryGetValue(key, out var fields); if (fields.IsNullOrEmpty()) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheQueryFields.TryGetValue(key, out fields); } if (fields.IsNullOrEmpty()) { throw new Exception("empty fields"); } return(fields); }
/// <summary> /// get default field /// </summary> /// <param name="entityType">entity type</param> /// <returns></returns> public static EntityField GetDefaultField(ServerType serverType, Type entityType) { string key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(string.Empty); } entityServerTypeCacheQueryFields.TryGetValue(key, out var fields); if (fields.IsNullOrEmpty()) { ConfigEntityToServerType(key, entityType); entityServerTypeCacheQueryFields.TryGetValue(key, out fields); } EntityField field = null; if (fields?.Count > 0) { field = fields[0]; } field = field ?? string.Empty; return(field); }
/// <summary> /// get field /// </summary> /// <param name="serverType">db server type</param> /// <param name="entityType">entity type</param> /// <param name="propertyName">property name</param> /// <returns></returns> public static EntityField GetField(ServerType serverType, Type entityType, string propertyName) { if (propertyName.IsNullOrEmpty()) { return(string.Empty); } string key = serverType.GetServerTypeAndEntityKey(entityType); if (key.IsNullOrEmpty()) { return(string.Empty); } entityServerTypeCacheFields.TryGetValue(key, out var allFields); if (allFields.IsNullOrEmpty()) { //config entity ConfigEntityToServerType(key, entityType); entityServerTypeCacheFields.TryGetValue(key, out allFields); } EntityField field = null; allFields?.TryGetValue(propertyName, out field); return(field ?? propertyName); }
/// <summary> /// register entity config /// </summary> /// <param name="entityConfig">entity config</param> static void ConfigEntityToServerType(ServerType serverType, Type entityType) { string key = serverType.GetServerTypeAndEntityKey(entityType); ConfigEntityToServerType(key, entityType); }