get Dimension fields

VendTrans_ds.object(fieldId2Ext(fieldNum(VendTrans, Dimension), 2)).validate();
from collections.abc import Callable from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field, model_validator class ElasticsearchConfig(BaseModel): collection_name: str = Field("mem0", description="Name of the index") host: str = Field("localhost", description="Elasticsearch host") port: int = Field(9200, description="Elasticsearch port") user: Optional[str] = Field(None, description="Username for authentication") password: Optional[str] = Field(None, description="Password for authentication") cloud_id: Optional[str] = Field(None, description="Cloud ID for Elastic Cloud") api_key: Optional[str] = Field(None, description="API key for authentication") embedding_model_dims: int = Field(1536, description="Dimension of the embedding vector") verify_certs: bool = Field(True, description="Verify SSL certificates") use_ssl: bool = Field(True, description="Use SSL for connection") auto_create_index: bool = Field(True, description="Automatically create index during initialization") custom_search_query: Optional[Callable[[List[float], int, Optional[Dict]], Dict]] = Field( None, description="Custom search query function. Parameters: (query, limit, filters) -> Dict" ) @model_validator(mode="before") @classmethod def validate_auth(cls, values: Dict[str, Any]) -> Dict[str, Any]: # Check if either cloud_id or host/port is provided if not values.get("cloud_id") and not values.get("host"): raise ValueError("Either cloud_id or host must be provided") # Check if authentication is provided if not any([values.get("api_key"), (values.get("user") and values.get("password"))]): raise ValueError("Either api_key or user/password must be provided") return values @model_validator(mode="before") @classmethod def validate_extra_fields(cls, values: Dict[str, Any]) -> Dict[str, Any]: allowed_fields = set(cls.model_fields.keys()) input_fields = set(values.keys()) extra_fields = input_fields - allowed_fields if extra_fields: raise ValueError( f"Extra fields not allowed: {', '.join(extra_fields)}. " f"Please input only the following fields: {', '.join(allowed_fields)}" ) return values按照上述分析一下
07-04
/* * Copyright (c) Huawei Technologies Co., Ltd. 2024-2024. All rights reserved. */ package com.huawei.it.tgmes.tmas.common.mybatis.extended; import com.huawei.it.jalor5.core.log.ILogger; import com.huawei.it.jalor5.core.log.JalorLoggerFactory; import com.huawei.it.jalor5.core.orm.ITagHandler; import com.huawei.it.jalor5.core.request.impl.RequestContext; import com.huawei.it.jalor5.core.request.impl.RequestContextConstants; import com.huawei.it.jalor5.core.util.CollectionUtil; import com.huawei.it.jalor5.security.AuthenticationException; import com.huawei.it.jalor5.security.ProgramVO; import com.huawei.it.jalor5.security.SecurityConstants; import com.huawei.it.jalor5.security.SecuritySystemException; import com.huawei.it.jalor5.security.UserVO; import com.huawei.it.jalor5.security.service.impl.internal.cache.UserProgramsCacheFactory; import com.huawei.it.jalor5.security.service.internal.IProgramSqlBuilder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.w3c.dom.Element; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 获取用户的数据范围和调用标签解析处理 * * @author 杜忠奥 * @since 2024.01.08 */ @Component("customProgramTagHandler") public class CustomProgramTagHandler implements ITagHandler { private static final ILogger LOG = JalorLoggerFactory.getLogger(CustomProgramTagHandler.class); @Autowired private IProgramSqlBuilder programSqlBuilder; @Override public String handle(Element ele, String tag, Object parameterObject) { // 条件连接符 String prepend = ele.getAttribute("prepend"); // 解析dimensions2Fields属性 String dimensions2Fields = ele.getAttribute("dimensions2Fields"); String[] fields = dimensions2Fields.split(","); Map<String, String> dimension2FieldMap = new HashMap<>(fields.length); for (String field : fields) { String[] dimension = field.split(":"); if (dimension == null || dimension.length != 2) { throw new IllegalArgumentException("The Dimension should be in a pair, dimensions2Fields: " + dimensions2Fields); } dimension2FieldMap.put(dimension[0], dimension[1]); } UserVO user = (UserVO) RequestContext.getCurrent().getUser(); List<ProgramVO> programs = new ArrayList<>(); if (user == null) { throw new AuthenticationException(); } HashMap<String, List<String>> map = (HashMap<String, List<String>>) RequestContext.getCurrent() .getItem(RequestContextConstants.AAS_PROGRAMS_MAP); /* * 当请求头中传入的范围不为空,则优先走公共服务调用逻辑,否则走合并角色逻辑 */ programs = getPrograms(user, programs, map); // 调用IProgramSqlBuilder接口 StringBuilder stringBuilder = ProgramSqlBuilderUtil.buildSql(prepend, dimension2FieldMap, programs); return stringBuilder.toString(); } private List<ProgramVO> getPrograms(UserVO user, List<ProgramVO> programs, HashMap<String, List<String>> map) { if (map != null) { programs.addAll(programSqlBuilder.buildProgramVO(map)); return programs; } // 上下文用户信息中包含数据范围信息,则直接返回 if(!CollectionUtil.isNullOrEmpty(user.getCurrentPrograms())) { return user.getCurrentPrograms(); } String permission = (String) RequestContext.getCurrent().getItem(SecurityConstants.SECURITY_PERMISSION_KEY); try { // 用户加载数据范围使用缓存 programs = UserProgramsCacheFactory.getInstance().getProgramsByUserPerm(user.getUserId(), permission); } catch (Exception ex) { LOG.info("AddProgramTagHandler -> findProgramsInfo : huawei.jalor5.security.00010089 " + ex); throw new SecuritySystemException("huawei.jalor5.security.00010089", ex); } return programs; } } 结合这个讲讲dimensions2Fields
最新发布
09-26
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值