<?xml version="1.0" encoding="utf-8"?>
<EntityModel xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:schemaLocation="https://newlifex.com https://newlifex.com/Model202407.xsd" Document="https://newlifex.com/xcode/model" xmlns="https://newlifex.com/Model202407.xsd">
  <Option>
    <!--类名模板。其中{name}替换为Table.Name，如{name}Model/I{name}Dto等-->
    <ClassNameTemplate />
    <!--显示名模板。其中{displayName}替换为Table.DisplayName-->
    <DisplayNameTemplate />
    <!--基类。可能包含基类和接口，其中{name}替换为Table.Name-->
    <BaseClass />
    <!--命名空间-->
    <Namespace>Stardust.Data</Namespace>
    <!--输出目录-->
    <Output>.\</Output>
    <!--是否使用中文文件名。默认false-->
    <ChineseFileName>False</ChineseFileName>
    <!--用于生成Copy函数的参数类型。例如{name}或I{name}-->
    <ModelNameForCopy />
    <!--带有索引器。实现IModel接口-->
    <HasIModel>False</HasIModel>
    <!--可为null上下文。生成String?等-->
    <Nullable>False</Nullable>
    <!--数据库连接名-->
    <ConnName>Stardust</ConnName>
    <!--模型类模版。设置后生成模型类，用于接口数据传输，例如{name}Model-->
    <ModelClass />
    <!--模型类输出目录。默认当前目录的Models子目录-->
    <ModelsOutput>.\Models\</ModelsOutput>
    <!--模型接口模版。设置后生成模型接口，用于约束模型类和实体类，例如I{name}-->
    <ModelInterface />
    <!--模型接口输出目录。默认当前目录的Interfaces子目录-->
    <InterfacesOutput>.\Interfaces\</InterfacesOutput>
    <!--用户实体转为模型类的模型类。例如{name}或{name}DTO-->
    <ModelNameForToModel />
    <!--命名格式。Default/Upper/Lower/Underline-->
    <NameFormat>Default</NameFormat>
    <!--魔方区域显示名-->
    <DisplayName />
    <!--魔方控制器输出目录-->
    <CubeOutput>../../Stardust.Web/Areas/Registry</CubeOutput>
  </Option>
  <Tables>
    <Table Name="App" TableName="StarApp" Description="应用系统。服务提供者和消费者">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="ProjectId" DataType="Int32" Map="Stardust.Data.Platform.GalaxyProject@Id@Name" Description="项目。资源归属的团队" />
        <Column Name="Name" DataType="String" Master="True" Nullable="False" Description="名称" />
        <Column Name="DisplayName" DataType="String" Description="显示名" />
        <Column Name="Secret" DataType="String" Description="密钥" />
        <Column Name="Category" DataType="String" Description="类别" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="AutoActive" DataType="Boolean" Description="自动激活。自动激活启用该应用在注册中心提供的服务，供其它消费者使用" />
        <Column Name="Version" DataType="String" Description="版本。多版本实例使用时，仅记录最大版本" />
        <Column Name="Compile" DataType="DateTime" Description="编译时间。最大版本应用的编译时间" />
        <Column Name="Period" DataType="Int32" Description="采样周期。应用定期采样并上报性能数据，默认60秒" />
        <Column Name="Singleton" DataType="Boolean" Description="单例。每个节点只部署一个实例，多节点多实例，此时使用本地IP作为唯一标识，便于管理实例" />
        <Column Name="WhiteIPs" DataType="String" Description="IP白名单。符合条件的来源IP才允许访问，支持*通配符，多个逗号隔开" Category="安全告警" />
        <Column Name="BlackIPs" DataType="String" Description="IP黑名单。符合条件的来源IP禁止访问，支持*通配符，多个逗号隔开" Category="安全告警" />
        <Column Name="WebHook" DataType="String" Length="500" Description="告警机器人。钉钉、企业微信等" Category="安全告警" />
        <Column Name="AlarmOnOffline" DataType="Boolean" Description="下线告警。节点下线时，发送告警" Category="安全告警" />
        <Column Name="LastLogin" DataType="DateTime" Description="最后登录" />
        <Column Name="LastIP" DataType="String" Description="最后IP" />
        <Column Name="AllowControlNodes" DataType="String" Description="节点控制。安全性设计，允许该应用发指令控制的目标节点编码或目标应用名称，多节点逗号分隔，*表示全部节点" Category="安全告警" />
        <Column Name="Remark" DataType="String" Length="500" Description="内容" Category="扩展" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateUser" DataType="String" Description="更新者" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新者" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="ProjectId" />
      </Indexes>
    </Table>
    <Table Name="AppOnline" Description="应用在线。一个应用有多个部署，每个在线会话对应一个服务地址" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="ProjectId" DataType="Int32" Map="Stardust.Data.Platform.GalaxyProject@Id@Name" Description="项目。资源归属的团队" />
        <Column Name="Category" DataType="String" Description="类别" />
        <Column Name="AppId" DataType="Int32" Description="应用" />
        <Column Name="Name" DataType="String" Master="True" Description="名称。应用名称" />
        <Column Name="NodeId" DataType="Int32" Description="节点。节点服务器" />
        <Column Name="Client" DataType="String" Description="客户端。IP加进程，不同应用的Client可能相同，但几率很低，暂不考虑" />
        <Column Name="Scope" DataType="String" Description="作用域" />
        <Column Name="Version" DataType="String" Description="版本。客户端" />
        <Column Name="Compile" DataType="DateTime" Description="编译时间。客户端" />
        <Column Name="PingCount" DataType="Int32" Description="心跳" />
        <Column Name="WorkerId" DataType="Int32" Description="雪花标识。应用内唯一标识该节点" />
        <Column Name="WebSocket" DataType="Boolean" Description="长连接。WebSocket长连接" />
        <Column Name="ProcessId" DataType="Int32" Description="进程" />
        <Column Name="ProcessName" DataType="String" Length="200" Description="进程名称" />
        <Column Name="CommandLine" DataType="String" Length="500" Description="命令行" />
        <Column Name="UserName" DataType="String" Description="用户名。启动该进程的用户名" />
        <Column Name="MachineName" DataType="String" Description="机器名" />
        <Column Name="StartTime" DataType="DateTime" Description="进程时间" />
        <Column Name="IP" DataType="String" Length="200" Description="本地IP。节点本地IP地址" />
        <Column Name="Listens" DataType="String" Length="200" Description="监听端口。网络端口监听信息" />
        <Column Name="Token" DataType="String" Length="500" Description="令牌" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" Category="扩展" />
        <Column Name="Creator" DataType="String" Description="创建者。服务端节点" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Client" Unique="True" />
        <Index Columns="ProjectId" />
        <Index Columns="AppId,IP" />
        <Index Columns="Token" />
        <Index Columns="IP" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="AppHistory" Description="应用历史" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="AppId" DataType="Int32" Description="应用" />
        <Column Name="Client" DataType="String" Description="客户端。IP加进程" />
        <Column Name="Version" DataType="String" Description="版本。客户端实例版本" />
        <Column Name="Action" DataType="String" Description="操作" />
        <Column Name="Success" DataType="Boolean" Description="成功" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" Category="扩展" />
        <Column Name="Creator" DataType="String" Description="创建者。服务端节点" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="2000" Description="内容" />
      </Columns>
      <Indexes>
        <Index Columns="AppId,Client" />
        <Index Columns="AppId,Action" />
        <Index Columns="Action,Success" />
      </Indexes>
    </Table>
    <Table Name="AppCommand" Description="应用命令" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppId" DataType="Int32" Description="应用" />
        <Column Name="Command" DataType="String" Master="True" Description="命令" />
        <Column Name="Argument" DataType="String" Length="500" Description="参数" />
        <Column Name="StartTime" DataType="DateTime" Description="开始执行时间。用于提前下发指令后延期执行，暂时不支持取消" />
        <Column Name="Expire" DataType="DateTime" Description="过期时间。未指定时表示不限制" />
        <Column Name="Status" DataType="Int32" Description="状态。命令状态" Type="NewLife.Remoting.Models.CommandStatus" />
        <Column Name="Times" DataType="Int32" Description="次数。一共执行多少次，超过10次后取消" />
        <Column Name="Result" DataType="String" Length="500" Description="结果" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" Category="扩展" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新者" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" DataScale="time" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppId,Command" />
        <Index Columns="UpdateTime,AppId,Command" />
      </Indexes>
    </Table>
    <Table Name="AppMeter" Description="应用性能。保存应用上报的性能数据，如CPU、内存、线程、句柄等" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="AppId" DataType="Int32" Description="应用" />
        <Column Name="ClientId" DataType="String" Description="实例。应用可能多实例部署，ip@proccessid" />
        <Column Name="Source" DataType="String" Description="来源。数据来源，应用心跳、监控数据上报携带、远程发布后由StarAgent上报" />
        <Column Name="Memory" DataType="Int32" Description="内存。单位M" />
        <Column Name="ProcessorTime" DataType="Int32" ItemType="TimeSpan" Description="处理器。处理器时间，单位s" />
        <Column Name="CpuUsage" DataType="Double" ItemType="percent" Description="CPU负载。处理器时间除以物理时间的占比" />
        <Column Name="Threads" DataType="Int32" Description="线程数" />
        <Column Name="WorkerThreads" DataType="Int32" Description="工作线程。线程池可用工作线程数，主要是Task使用" />
        <Column Name="IOThreads" DataType="Int32" Description="IO线程。线程池可用IO线程数，主要是网络接收所用" />
        <Column Name="AvailableThreads" DataType="Int32" Description="活跃线程。线程池活跃线程数，辅助分析线程饥渴问题" />
        <Column Name="PendingItems" DataType="Int64" Description="挂起任务。线程池挂起任务数，辅助分析线程饥渴问题" />
        <Column Name="CompletedItems" DataType="Int64" Description="完成任务。线程池已完成任务数，辅助分析线程饥渴问题" />
        <Column Name="Handles" DataType="Int32" Description="句柄数" />
        <Column Name="Connections" DataType="Int32" Description="连接数" />
        <Column Name="GCCount" DataType="Int32" Description="GC次数。周期时间内发生GC的次数" />
        <Column Name="HeapSize" DataType="Int32" Description="堆内存。单位M" />
        <Column Name="Time" DataType="DateTime" Description="采集时间" />
        <Column Name="Creator" DataType="String" Description="创建者。服务端节点" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppId,ClientId,Id" />
      </Indexes>
    </Table>
    <Table Name="Service" Description="服务信息。服务提供者发布的服务">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="ProjectId" DataType="Int32" Map="Stardust.Data.Platform.GalaxyProject@Id@Name" Description="项目。资源归属的团队" />
        <Column Name="Name" DataType="String" Master="True" Nullable="False" Description="名称。服务名，提供一个地址，包含多个接口" />
        <Column Name="DisplayName" DataType="String" Description="显示名" />
        <Column Name="Category" DataType="String" Description="类别" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="Extranet" DataType="Boolean" Description="外网。外网服务使用提供者公网地址进行注册" />
        <Column Name="Singleton" DataType="Boolean" Description="单例。每个节点只部署一个实例，多节点多实例，此时使用本地IP作为唯一标识，便于设置权重" />
        <Column Name="UseScope" DataType="Boolean" Description="作用域。使用作用域隔离后，消费者只能使用本作用域内的服务" />
        <Column Name="Address" DataType="String" Description="服务地址模版。固定的网关地址，或地址模版如http://{IP}:{Port}，默认不填写，自动识别地址" />
        <Column Name="HealthCheck" DataType="Boolean" Description="健康监测。定时检测服务是否可用" />
        <Column Name="HealthAddress" DataType="String" Description="监测地址。健康监测接口地址，相对地址或绝对地址" />
        <Column Name="Providers" DataType="Int32" Description="提供者。数量" />
        <Column Name="Consumers" DataType="Int32" Description="消费者。数量" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateUser" DataType="String" Description="更新者" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新者" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="内容" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Name" Unique="True" />
        <Index Columns="ProjectId" />
      </Indexes>
    </Table>
    <Table Name="AppService" Description="应用服务。应用提供的服务">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppId" DataType="Int32" Description="应用。提供服务的应用程序" />
        <Column Name="ServiceId" DataType="Int32" Description="服务" />
        <Column Name="ServiceName" DataType="String" Description="服务名" />
        <Column Name="Client" DataType="String" Description="客户端。由该应用实例提供服务，IP加端口" />
        <Column Name="NodeId" DataType="Int32" Description="节点。节点服务器" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="PingCount" DataType="Int32" Description="心跳。应用程序定期向注册中心更新服务状态" />
        <Column Name="Version" DataType="String" Description="版本。应用程序版本号" />
        <Column Name="Address" DataType="String" Length="500" Description="地址。经地址模版处理后对外服务的地址，默认是本地局域网服务地址，如http://127.0.0.1:1234" />
        <Column Name="OriginAddress" DataType="String" Length="500" Description="原始地址。客户端上报地址，需要经服务端处理后才能对外提供服务" />
        <Column Name="Weight" DataType="Int32" Description="权重。多实例提供服务时，通过权重系数调节客户端调用各实例服务的比例" />
        <Column Name="Scope" DataType="String" Description="作用域。根据配置中心应用规则计算，禁止跨域访问服务" />
        <Column Name="Tag" DataType="String" Description="标签。带有指定特性，逗号分隔" />
        <Column Name="CheckTimes" DataType="Int32" Description="监测次数。健康监测次数" />
        <Column Name="Healthy" DataType="Boolean" Description="健康。无需健康监测，或监测后服务可用" />
        <Column Name="LastCheck" DataType="DateTime" Description="监测时间。最后一次监测时间，一段时间监测失败后禁用" />
        <Column Name="CheckResult" DataType="String" Length="2000" Description="监测结果。检测结果，错误信息等" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppId" />
        <Index Columns="ServiceId" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="AppConsume" Description="应用消费。应用消费的服务">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="AppId" DataType="Int32" Description="应用。提供服务的应用程序" />
        <Column Name="ServiceId" DataType="Int32" Description="服务" />
        <Column Name="ServiceName" DataType="String" Description="服务名" />
        <Column Name="Client" DataType="String" Description="客户端。由该应用实例提供服务，IP加端口" />
        <Column Name="NodeId" DataType="Int32" Description="节点。节点服务器" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="PingCount" DataType="Int32" Description="心跳。应用程序定期向注册中心更新服务状态" />
        <Column Name="MinVersion" DataType="String" Description="最低版本。要求返回大于等于该版本的服务提供者" />
        <Column Name="Scope" DataType="String" Description="作用域。根据配置中心应用规则计算，禁止跨域访问服务" />
        <Column Name="Tag" DataType="String" Description="标签。带有指定特性，逗号分隔" />
        <Column Name="Address" DataType="String" Length="500" Description="地址。最终消费得到的地址" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppId" />
        <Index Columns="ServiceId" />
        <Index Columns="UpdateTime" />
      </Indexes>
    </Table>
    <Table Name="AppClientLog" Description="应用日志" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="AppId" DataType="Int32" Master="True" Description="应用" />
        <Column Name="ClientId" DataType="String" Master="True" Description="客户端" />
        <Column Name="Time" DataType="String" Description="时间" />
        <Column Name="ThreadId" DataType="String" Description="线程" />
        <Column Name="Kind" DataType="String" Description="类型" />
        <Column Name="Name" DataType="String" Description="名称" />
        <Column Name="Message" DataType="String" Length="-1" Description="内容" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="AppId,ClientId,ThreadId,Id" />
        <Index Columns="AppId,Id" />
      </Indexes>
    </Table>
  </Tables>
</EntityModel>