【店小二】公告:

sql轉ent
142  |   |   |  4

功能介紹

1.支持多種數據庫的建表 sql轉ent, 其中包含(pg、mysql)數據庫; 建表語句, 建表語句, 建表語句(重要的說3遍)
2.在轉換 sql 的時候, 需要確認下是否需要切換處理類型, 暫時支持3種處理方式(mysql, postgresql), 默認: mysql.
3.支持自定義過濾不需要的字段, 多個字段通過 , 隔開
說明: 不能在 sql 中包含註釋內容(即: -- xxx# xxx); 由於此工具是通過 ; 來分割語句處理.


示例

mysql 建表語句
CREATE TABLE if not exists user (
    id int NOT NULL AUTO_INCREMENT,
    name varchar(10) NOT NULL COMMENT '姓名',
    gender tinyint NOT NULL DEFAULT 0 COMMENT '性別 0-未知 1-男 2-女',
    age int NOT NULL COMMENT '年齡',
    created_date datetime DEFAULT CURRENT_TIMESP,
    updated_date datetime DEFAULT CURRENT_TIMESP ON UPDATE CURRENT_TIMESP,
    PRIMARY KEY (id)
);

處理後

// Code generated by https://gotool.top
package model

import (
    "entgo.io/ent"
    "entgo.io/ent/dialect"
    "entgo.io/ent/dialect/entsql"
    "entgo.io/ent/schema"
    "entgo.io/ent/schema/field"
)

type User struct {
    ent.Schema
}

func (u *User) Fields() []ent.Field {
    return []ent.Field{
        field.String("id").SchemaType(map[string]string{dialect.MySQL: "character"}).Default(sys_guid).Nillable(),
        field.String("name").SchemaType(map[string]string{dialect.MySQL: "character"}).Nillable().Comment("姓名"),
        field.Int32("gender").SchemaType(map[string]string{dialect.MySQL: "tinyint"}).Nillable().Comment("性別 0-未知 1-男 2-女"),
        field.Int32("age").SchemaType(map[string]string{dialect.MySQL: "tinyint"}).Nillable().Comment("年齡"),
        field.Time("created_date").SchemaType(map[string]string{dialect.MySQL: "timesp"}).Optional().Default(now()).Nillable(),
        field.Time("updated_date").SchemaType(map[string]string{dialect.MySQL: "timesp"}).Optional().Default(now()).Nillable()
    }
}

func (u *User) Edges() []ent.Edge {
    return nil
}

func (u *User) Annotations() []schema.Annotation {
    return []schema.Annotation{entsql.Annotation{Table: "user"}}
}
pgsql 建表語句
CREATE TABLE if not exists user (
    id character varying(32) NOT NULL DEFAULT sys_guid(),
    name character varying(10) NOT NULL,
    gender tinyint NOT NULL,
    age tinyint NOT NULL,
    created_date timesp without time zone DEFAULT now(),
    updated_date timesp without time zone DEFAULT now(),
    CONSTRAINT user_pkey PRIMARY KEY (id)
);
COMMENT ON TABLE user IS '用戶表';
COMMENT ON COLUMN user.id IS '主鍵';
COMMENT ON COLUMN user.name IS '姓名';
COMMENT ON COLUMN user.gender IS '性別 0-未知 1-男 2-女';
COMMENT ON COLUMN user.age IS '年齡';
COMMENT ON COLUMN user.created_date IS '創建時間';
COMMENT ON COLUMN user.updated_date IS '更新時間';

處理後

// Code generated by https://gotool.top
package model

import (
    "entgo.io/ent"
    "entgo.io/ent/dialect"
    "entgo.io/ent/dialect/entsql"
    "entgo.io/ent/schema"
    "entgo.io/ent/schema/field"
)

type User struct {
    ent.Schema
}

func (u *User) Fields() []ent.Field {
    return []ent.Field{
        field.String("id").SchemaType(map[string]string{dialect.Postgres: "character"}).Default(sys_guid).Nillable(),
        field.String("name").SchemaType(map[string]string{dialect.Postgres: "character"}).Nillable(),
        field.Int32("gender").SchemaType(map[string]string{dialect.Postgres: "tinyint"}).Nillable(),
        field.Int32("age").SchemaType(map[string]string{dialect.Postgres: "tinyint"}).Nillable(),
        field.Time("created_date").SchemaType(map[string]string{dialect.Postgres: "timesp"}).Optional().Default(now()).Nillable(),
        field.Time("updated_date").SchemaType(map[string]string{dialect.Postgres: "timesp"}).Optional().Default(now()).Nillable()
    }
}

func (u *User) Edges() []ent.Edge {
    return nil
}

func (u *User) Annotations() []schema.Annotation {
    a.Annotation{entsql.Annotation{Table: "user"}}
}