• ent 基本使用 一 schema 迁移


    ent 是 facebook 开源的golang orm 框架,简单强大,以下是一个简单使用

    环境准备

    • 安装ent 工具
    go get github.com/facebookincubator/ent/cmd/entc
    • 准备mysql 环境

      使用docker-compose 运行

    docker-compose 文件

    version: "3"
    services:
      mysql:
        image: mysql:5.7.16
        ports:
          - 3306:3306
        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
        environment:
          MYSQL_ROOT_PASSWORD: dalongrong
          MYSQL_DATABASE: gogs
          MYSQL_USER: gogs
          MYSQL_PASSWORD: dalongrong
          TZ: Asia/Shanghai

    启动

    docker-compose up  -d
    • 初始化一个golang 项目
    go mod init github.com/rongfengliang/ent-demo

    使用

    • 初始化schema
    entc init User

    效果:

    ├── docker-compose.yaml
    └── ent
        └── schema
            └── user.go

    golang 代码内容:

    package schema
    import "github.com/facebookincubator/ent"
    // User holds the schema definition for the User entity.
    type User struct {
      ent.Schema
    }
    // Fields of the User.
    func (User) Fields() []ent.Field {
      return nil
    }
    // Edges of the User.
    func (User) Edges() []ent.Edge {
      return nil
    }
     
     
    • 添加字段
    package schema
    import (
      "github.com/facebookincubator/ent"
      "github.com/facebookincubator/ent/schema/field"
    )
    // User holds the schema definition for the User entity.
    type User struct {
      ent.Schema
    }
    // Fields of the User.
    func (User) Fields() []ent.Field {
      return []ent.Field{
            field.Int("age").
                Positive(),
            field.String("name").
                Default("unknown"),
        }
    }
    // Edges of the User.
    func (User) Edges() []ent.Edge {
      return nil
    }
    • 生成代码
    entc generate ./ent/schema

    效果:

    • 编写入口
      main.go
     
    package main
    import (
        "log"
        "github.com/rongfengliang/ent-demo/ent"
        "context"
        _ "github.com/go-sql-driver/mysql"
    )
    func main() {
        client, err := ent.Open("mysql", "root:dalongrong@tcp(127.0.0.1)/gogs")
        if err != nil {
            log.Fatalf("failed opening connection to sqlite: %v", err)
        }
        defer client.Close()
        // run the auto migration tool.
        if err := client.Schema.Create(context.Background()); err != nil {
            log.Fatalf("failed creating schema resources: %v", err)
        }
    }
     
     
    • 运行

      说明:以上是一个schema 的处理

    go run main.go
     
    • 数据库效果

    说明

    以上是一个简单的运行 ,后边会有一些其他的使用说明

    参考资料

    https://entgo.io/docs/getting-started/
    https://github.com/facebookincubator/ent
    https://github.com/rongfengliang/ent-demo

  • 相关阅读:
    一. js高级(1)-面向对象编程
    tips01- 定位
    h5c3 part6 flex
    h5c3 part5 background and transform
    template and pagination
    h5c3 part4
    h5c3 part3
    h5c3 part2
    h5c3 part1
    学习博客
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/11668517.html
Copyright © 2020-2023  润新知