<?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>Entity</BaseClass>
    <!--命名空间-->
    <Namespace>Stardust.Data.Deployment</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/Deployment</CubeOutput>
  </Option>
  <Tables>
    <Table Name="AppDeploy" Description="应用部署。应用部署配置，单应用可有多个部署集合，例如分别是arm和x64。发布时新增版本，拉取代码编译并上传zip应用包，再到部署节点里发布">
      <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="AppId" DataType="Int32" Description="应用。对应StarApp" />
        <Column Name="Category" DataType="String" Description="类别" />
        <Column Name="Name" DataType="String" Master="True" Description="名称。应用名" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="Nodes" DataType="Int32" Description="节点。该应用部署集所拥有的节点数" />
        <Column Name="Version" DataType="String" Description="版本。应用正在使用的版本号" />
        <Column Name="MultiVersion" DataType="Boolean" Description="多版本。支持多运行时版本，此时只认可部署版本中符合运行时要求的最新可用版本" />
        <Column Name="AutoPublish" DataType="Boolean" Description="自动发布。应用版本后自动发布到启用节点，加快发布速度" />
        <Column Name="PackageName" DataType="String" Description="包名。用于判断上传包名是否正确，避免错误上传其它应用包，支持*模糊匹配" />
        <Column Name="Port" DataType="Int32" Description="监听端口。应用自身监听的端口，如果是dotnet应用会增加urls参数" />
        <Column Name="Urls" DataType="String" Description="服务地址。对外提供服务的域名端口地址，自动生成nginx配置，如https://sso.newlifex.com" />
        <Column Name="Repository" DataType="String" ItemType="url" Length="200" Description="代码库。下载代码的位置" Category="编译参数" />
        <Column Name="Branch" DataType="String" DefaultValue="master" Description="分支。默认master" Category="编译参数" />
        <Column Name="ProjectPath" DataType="String" Description="项目路径。需要编译的项目路径，相对于代码库根目录" Category="编译参数" />
        <Column Name="ProjectKind" DataType="Int32" DefaultValue="1" Description="项目类型。默认dotnet" Type="Stardust.Models.ProjectKinds" Category="编译参数" />
        <Column Name="BuildArgs" DataType="String" Length="200" Description="编译参数。编译项目时所需参数" Category="编译参数" />
        <Column Name="PackageFilters" DataType="String" Description="打包过滤器。需要打包哪些文件，支持通配符，多项分号隔开" Category="编译参数" />
        <Column Name="FileName" DataType="String" Description="文件。应用启动文件，可直接使用zip包" Category="发布参数" />
        <Column Name="Arguments" DataType="String" Length="500" Description="参数。启动应用的参数" Category="发布参数" />
        <Column Name="WorkingDirectory" DataType="String" Length="200" Description="工作目录。应用根目录" Category="发布参数" />
        <Column Name="UserName" DataType="String" Description="用户名。以该用户执行应用" Category="发布参数" />
        <Column Name="Environments" DataType="String" Length="500" Description="环境变量。启动应用前设置的环境变量" Category="发布参数" />
        <Column Name="MaxMemory" DataType="Int32" Description="最大内存。单位M，超过上限时自动重启应用，默认0不限制" Category="发布参数" />
        <Column Name="Mode" DataType="Int32" Description="工作模式。0默认exe/zip；1仅解压；2解压后运行；3仅运行一次；4多实例exe/zip" Type="Stardust.Models.ServiceModes" Category="发布参数" />
        <Column Name="AutoStop" DataType="Boolean" Description="自动停止。随着宿主的退出，同时停止该应用进程" Category="发布参数" />
        <Column Name="ReloadOnChange" DataType="Boolean" 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" 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="AppDeployNode" Description="应用节点。应用部署集和节点服务器的依赖关系，一个应用可有多个部署集如arm和x64，在目标节点上发布该部署集对应的应用zip包">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="DeployName" DataType="String" Description="发布名。默认为空，使用部署集上名字。可用于单节点多发布场景" />
        <Column Name="DeployId" ColumnName="AppId" DataType="Int32" Map="AppDeploy@Id@$" Description="应用部署集。对应AppDeploy" />
        <Column Name="NodeId" DataType="Int32" Description="节点。节点服务器" />
        <Column Name="IP" DataType="String" Description="IP地址。节点所在内网IP地址" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="Port" DataType="Int32" Description="应用端口。应用自身监听的端口，如果是dotnet应用会增加urls参数" />
        <Column Name="FileName" DataType="String" Description="文件。应用启动文件，可直接使用zip包，支持差异定制，为空时使用应用集配置" Category="发布参数" />
        <Column Name="Arguments" DataType="String" Length="500" Description="参数。启动应用的参数，为空时使用应用集配置" Category="发布参数" />
        <Column Name="WorkingDirectory" DataType="String" Length="200" Description="工作目录。应用根目录，为空时使用应用集配置" Category="发布参数" />
        <Column Name="UserName" DataType="String" Description="用户名。以该用户执行应用" Category="发布参数" />
        <Column Name="Environments" DataType="String" Length="500" Description="环境变量。启动应用前设置的环境变量" Category="发布参数" />
        <Column Name="Mode" DataType="Int32" Description="工作模式。0默认exe/zip；1仅解压；2解压后运行；3仅运行一次；4多实例exe/zip。为空时使用应用集配置" Type="Stardust.Models.ServiceModes" Category="发布参数" />
        <Column Name="Delay" DataType="Int32" Description="延迟。批量发布时，需要延迟执行的时间，用于滚动发布，单位秒" Category="发布参数" />
        <Column Name="ProcessId" DataType="Int32" Description="进程" Category="状态" />
        <Column Name="ProcessName" DataType="String" Length="200" Description="进程名称" Category="状态" />
        <Column Name="ProcessUser" DataType="String" Description="进程用户。启动该进程的用户名" Category="状态" />
        <Column Name="StartTime" DataType="DateTime" Description="进程时间" Category="状态" />
        <Column Name="Version" DataType="String" Description="版本。客户端" Category="状态" />
        <Column Name="Compile" DataType="DateTime" Description="编译时间。客户端" Category="状态" />
        <Column Name="Listens" DataType="String" Length="200" Description="监听端口。网络端口监听信息" Category="状态" />
        <Column Name="LastActive" DataType="DateTime" Description="最后活跃。最后一次上报心跳的时间" Category="状态" />
        <Column Name="LastUpload" DataType="DateTime" Description="最后上传。最后一次上传客户端配置的时间" Category="状态" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" 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" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeployId" />
        <Index Columns="NodeId" />
      </Indexes>
    </Table>
    <Table Name="AppDeployVersion" Description="部署版本。应用的多个可发布版本，主要管理应用程序包，支持随时切换使用不同版本，来自上传或自动编译">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="DeployId" ColumnName="AppId" DataType="Int32" Map="AppDeploy@Id@$" Description="应用部署集。对应AppDeploy" />
        <Column Name="Version" DataType="String" Master="True" Nullable="False" Description="版本。如2.3.2022.0911，字符串比较大小" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="Url" DataType="String" ItemType="file" Length="500" Description="资源地址。一般打包为Zip包，StarAgent下载后解压缩覆盖" />
        <Column Name="Overwrite" DataType="String" Length="100" Description="覆盖文件。需要拷贝覆盖已存在的文件或子目录，支持*模糊匹配，多文件分号隔开。如果目标文件不存在，配置文件等自动拷贝" />
        <Column Name="Mode" DataType="Int32" Description="发布模式。1部分包，仅覆盖；2标准包，清空可执行文件再覆盖；3完整包，清空所有文件" Type="Stardust.Models.DeployModes" />
        <Column Name="Size" DataType="Int64" ItemType="GMK" Description="文件大小" />
        <Column Name="Hash" DataType="String" Description="文件哈希。MD5散列，避免下载的文件有缺失" />
        <Column Name="Runtime" DataType="Int32" Description="运行时。RID是运行时标识符，用于标识应用程序运行所在的目标平台。如win-x64/linux-arm" Type="Stardust.Models.RuntimeIdentifier" />
        <Column Name="TargetFramework" DataType="String" Description="目标框架。TFM目标运行时框架，如net8.0" />
        <Column Name="Progress" DataType="String" Description="进度。发布进度" />
        <Column Name="CommitId" DataType="String" Description="提交标识" Category="编译参数" />
        <Column Name="CommitLog" DataType="String" Description="提交记录" Category="编译参数" />
        <Column Name="CommitTime" DataType="DateTime" Description="提交时间" Category="编译参数" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" 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" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeployId,Version" Unique="True" />
      </Indexes>
    </Table>
    <Table Name="AppDeployHistory" Description="部署历史。记录应用集部署历史" ConnName="StardustData">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="DeployId" ColumnName="AppId" DataType="Int32" Map="AppDeploy@Id@$" Description="应用部署集。对应AppDeploy" />
        <Column Name="NodeId" DataType="Int32" Map="Stardust.Data.Nodes.Node@ID@Name" Description="节点。节点服务器" />
        <Column Name="Action" DataType="String" Nullable="False" Description="操作" />
        <Column Name="Success" DataType="Boolean" Description="成功" />
        <Column Name="Remark" DataType="String" Length="2000" Description="内容" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" Category="扩展" />
        <Column Name="CreateUserId" DataType="Int32" Description="创建者" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeployId,Id" />
        <Index Columns="DeployId,Action,Id" />
        <Index Columns="NodeId,Id" />
      </Indexes>
    </Table>
    <Table Name="AppBuildNode" Description="编译节点。应用部署集和编译节点的关系，一个应用可有多个部署集如arm和x64，在目标节点上发布该部署集对应的应用zip包">
      <Columns>
        <Column Name="Id" DataType="Int32" Identity="True" PrimaryKey="True" Description="编号" />
        <Column Name="DeployId" ColumnName="AppId" DataType="Int32" Map="AppDeploy@Id@$" Description="应用部署集。对应AppDeploy" />
        <Column Name="NodeId" DataType="Int32" Description="节点。节点服务器" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="SourcePath" DataType="String" Description="源代码目录" />
        <Column Name="PullCode" DataType="Boolean" Description="拉取源代码" />
        <Column Name="BuildProject" DataType="Boolean" Description="编译项目" />
        <Column Name="PackageOutput" DataType="Boolean" Description="打包输出" />
        <Column Name="UploadPackage" DataType="Boolean" Description="上传应用包" />
        <Column Name="TraceId" DataType="String" Description="追踪。最新一次查看采样，可用于关联多个片段，建立依赖关系，随线程上下文、Http、Rpc传递" 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" Description="更新时间" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="DeployId" />
        <Index Columns="NodeId" />
      </Indexes>
    </Table>
    <Table Name="Attachment" Description="附件。用于记录各系统模块使用的文件，可以是Local/NAS/OSS等，对应魔方附件表" ConnName="Cube">
      <Columns>
        <Column Name="Id" DataType="Int64" PrimaryKey="True" DataScale="time" Description="编号" />
        <Column Name="Category" DataType="String" Description="业务分类" />
        <Column Name="Key" DataType="String" Description="业务主键" />
        <Column Name="Title" DataType="String" Length="200" Description="标题。业务内容作为附件标题，便于查看管理" />
        <Column Name="FileName" DataType="String" Master="True" Length="200" Nullable="False" Description="文件名。原始文件名" />
        <Column Name="Extension" DataType="String" Description="扩展名" />
        <Column Name="Size" DataType="Int64" ItemType="GMK" Description="文件大小" />
        <Column Name="ContentType" DataType="String" Length="200" Description="内容类型。用于Http响应" />
        <Column Name="FilePath" DataType="String" Length="200" Description="路径。本地相对路径或OSS路径，本地相对路径加上附件目录的配置，方便整体转移附件" />
        <Column Name="Hash" DataType="String" Description="哈希。MD5" />
        <Column Name="Enable" DataType="Boolean" Description="启用" />
        <Column Name="UploadTime" DataType="DateTime" Description="上传时间。附件上传时间，可用于构造文件存储路径" />
        <Column Name="Url" DataType="String" Length="500" Description="网址。链接到附件所在信息页的地址" />
        <Column Name="Source" DataType="String" Length="500" Description="来源。用于远程抓取的附件来源地址，本地文件不存在时自动依次抓取" />
        <Column Name="TraceId" DataType="String" Description="追踪。链路追踪，用于APM性能追踪定位，还原该事件的调用链" Category="扩展" />
        <Column Name="CreateUser" DataType="String" Description="创建者" Category="扩展" />
        <Column Name="CreateUserID" DataType="Int32" Description="创建用户" Category="扩展" />
        <Column Name="CreateIP" DataType="String" Description="创建地址" Category="扩展" />
        <Column Name="CreateTime" DataType="DateTime" Description="创建时间" Category="扩展" />
        <Column Name="UpdateUser" DataType="String" Description="更新者" Category="扩展" />
        <Column Name="UpdateUserID" DataType="Int32" Description="更新用户" Category="扩展" />
        <Column Name="UpdateIP" DataType="String" Description="更新地址" Category="扩展" />
        <Column Name="UpdateTime" DataType="DateTime" Description="更新时间" Category="扩展" />
        <Column Name="Remark" DataType="String" Length="500" Description="备注" Category="扩展" />
      </Columns>
      <Indexes>
        <Index Columns="Category,Key" />
        <Index Columns="FilePath" />
        <Index Columns="Extension" />
      </Indexes>
    </Table>
  </Tables>
</EntityModel>