ent

package module
v0.0.8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 4, 2026 License: MIT Imports: 26 Imported by: 0

README

database/ent

database/ent 封装 Ent 使用的底层 dialect.Driver,用于复用 kratos-kit 中统一的数据库配置、连接池、debug SQL 日志、迁移回调、表注释和审计字段能力。

安装

按实际数据库导入对应 driver 子模块:

go get github.com/liujitcn/kratos-kit/database/ent@latest
go get github.com/liujitcn/kratos-kit/database/ent/driver/mysql@latest
go get github.com/liujitcn/kratos-kit/database/ent/driver/postgres@latest
go get github.com/liujitcn/kratos-kit/database/ent/driver/sqlite@latest

使用

Ent 的 *ent.Client 是业务项目按 schema 生成的类型,本模块只返回通用 driver:

import (
	"context"

	configv1 "github.com/liujitcn/kratos-kit/api/gen/go/config/v1"
	entkit "github.com/liujitcn/kratos-kit/database/ent"
	_ "github.com/liujitcn/kratos-kit/database/ent/driver/mysql"

	"your-app/ent"
)

func NewClient(cfg *configv1.Data_Database) (*ent.Client, func(), error) {
	drv, cleanup, err := entkit.NewEntClient(cfg)
	if err != nil {
		return nil, nil, err
	}

	client := ent.NewClient(ent.Driver(drv))
	if cfg.GetEnableMigrate() {
		if err = client.Schema.Create(context.Background()); err != nil {
			cleanup()
			return nil, nil, err
		}
		if err = drv.RunRegisteredTableComments(context.Background()); err != nil {
			cleanup()
			return nil, nil, err
		}
	}
	return client, cleanup, nil
}

迁移回调

若希望由 NewEntClientenable_migrate 开启时统一触发迁移,可注册迁移函数;注册迁移执行成功后,本模块会自动执行已注册的表注释回填:

import "entgo.io/ent/dialect"

entkit.RegisterMigrate(func(ctx context.Context, drv dialect.Driver) error {
	client := ent.NewClient(ent.Driver(drv))
	return client.Schema.Create(ctx)
})

审计字段

在 Ent schema 中加入 AuditMixin 后,会自动提供并回填 created_byupdated_bycreated_atupdated_at

func (User) Mixin() []ent.Mixin {
	return []ent.Mixin{
		entkit.AuditMixin{},
	}
}

表注释

字段注释通过 Ent 原生 field.Comment(...)entsql.WithComments(true) 落库。表注释可在迁移前注册:

entkit.RegisterTableComment("users", "用户表")

当前内置 driver 支持 mysqldorispostgres/postgresqlsqlite/sqlite3doris 复用 MySQL 协议连接能力,导入 database/ent/driver/mysql 即可注册。enable_traceenable_metrics 会在 Ent dialect.Driver 层记录 SQL 操作追踪、操作次数和耗时指标。

Doris 建表、分区、分桶等能力建议使用专用 SQL 管理,不建议依赖 Ent 自动迁移。

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AuditHook

func AuditHook() ent.Hook

AuditHook 返回用于回填 Ent 审计字段的 mutation hook。

func RegisterMigrate

func RegisterMigrate(fn MigrateFunc)

RegisterMigrate 注册用于数据库迁移的 Ent 迁移函数。

func RegisterMigrates

func RegisterMigrates(fn ...MigrateFunc)

RegisterMigrates 注册多个用于数据库迁移的 Ent 迁移函数。

func RegisterTableComment

func RegisterTableComment(table string, comment string)

RegisterTableComment 注册用于迁移后回填的数据库表注释。

func RegisterTableComments

func RegisterTableComments(comments ...TableComment)

RegisterTableComments 注册多个用于迁移后回填的数据库表注释。

func SetAuditExcludeTypes

func SetAuditExcludeTypes(types ...string)

SetAuditExcludeTypes 设置跳过审计字段回填的 Ent 类型名称。

Types

type AuditMixin

type AuditMixin struct {
	ent.Mixin
}

AuditMixin 提供 Ent 审计字段与回填 hook。

func (AuditMixin) Annotations

func (AuditMixin) Annotations() []schema.Annotation

Annotations 返回审计字段注释落库配置。

func (AuditMixin) Fields

func (AuditMixin) Fields() []ent.Field

Fields 返回审计字段定义。

func (AuditMixin) Hooks

func (AuditMixin) Hooks() []ent.Hook

Hooks 返回审计字段回填 hook。

type Client

type Client struct {
	dialect.Driver
	// contains filtered or unexported fields
}

Client 封装 Ent 底层 dialect.Driver 与 database/sql 连接池。

func NewEntClient

func NewEntClient(cfg *configv1.Data_Database) (*Client, func(), error)

NewEntClient 创建 Ent 数据库客户端。

func (*Client) Close

func (c *Client) Close() error

Close 关闭 Ent 底层数据库连接。

func (*Client) DB

func (c *Client) DB() *sql.DB

DB 返回底层 database/sql 连接池。

func (*Client) RunRegisteredMigrations

func (c *Client) RunRegisteredMigrations(ctx context.Context) error

RunRegisteredMigrations 执行已注册的 Ent 迁移函数。

func (*Client) RunRegisteredTableComments

func (c *Client) RunRegisteredTableComments(ctx context.Context) error

RunRegisteredTableComments 执行已注册的表注释回填。

type MigrateFunc

type MigrateFunc func(context.Context, dialect.Driver) error

MigrateFunc 定义 Ent 自动迁移函数。

type TableComment

type TableComment struct {
	Table   string
	Comment string
}

TableComment 描述 Ent 数据库表注释。

Directories

Path Synopsis
driver module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL