513 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			513 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package orm
 | |
| 
 | |
| import (
 | |
| 	"fmt"
 | |
| 	"os"
 | |
| 	"strings"
 | |
| 	"time"
 | |
| 
 | |
| 	// _ "github.com/bylevel/pq"
 | |
| 	_ "github.com/go-sql-driver/mysql"
 | |
| 	_ "github.com/lib/pq"
 | |
| 	_ "github.com/mattn/go-sqlite3"
 | |
| )
 | |
| 
 | |
| type Data struct {
 | |
| 	Id       int
 | |
| 	Boolean  bool
 | |
| 	Char     string    `orm:"size(50)"`
 | |
| 	Text     string    `orm:"type(text)"`
 | |
| 	Date     time.Time `orm:"type(date)"`
 | |
| 	DateTime time.Time
 | |
| 	Byte     byte
 | |
| 	Rune     rune
 | |
| 	Int      int
 | |
| 	Int8     int8
 | |
| 	Int16    int16
 | |
| 	Int32    int32
 | |
| 	Int64    int64
 | |
| 	Uint     uint
 | |
| 	Uint8    uint8
 | |
| 	Uint16   uint16
 | |
| 	Uint32   uint32
 | |
| 	Uint64   uint64
 | |
| 	Float32  float32
 | |
| 	Float64  float64
 | |
| 	Decimal  float64 `orm:"digits(8);decimals(4)"`
 | |
| }
 | |
| 
 | |
| type DataNull struct {
 | |
| 	Id       int
 | |
| 	Boolean  bool      `orm:"null"`
 | |
| 	Char     string    `orm:"size(50);null"`
 | |
| 	Text     string    `orm:"type(text);null"`
 | |
| 	Date     time.Time `orm:"type(date);null"`
 | |
| 	DateTime time.Time `orm:"null"`
 | |
| 	Byte     byte      `orm:"null"`
 | |
| 	Rune     rune      `orm:"null"`
 | |
| 	Int      int       `orm:"null"`
 | |
| 	Int8     int8      `orm:"null"`
 | |
| 	Int16    int16     `orm:"null"`
 | |
| 	Int32    int32     `orm:"null"`
 | |
| 	Int64    int64     `orm:"null"`
 | |
| 	Uint     uint      `orm:"null"`
 | |
| 	Uint8    uint8     `orm:"null"`
 | |
| 	Uint16   uint16    `orm:"null"`
 | |
| 	Uint32   uint32    `orm:"null"`
 | |
| 	Uint64   uint64    `orm:"null"`
 | |
| 	Float32  float32   `orm:"null"`
 | |
| 	Float64  float64   `orm:"null"`
 | |
| 	Decimal  float64   `orm:"digits(8);decimals(4);null"`
 | |
| }
 | |
| 
 | |
| type User struct {
 | |
| 	Id         int
 | |
| 	UserName   string `orm:"size(30);unique"`
 | |
| 	Email      string `orm:"size(100)"`
 | |
| 	Password   string `orm:"size(100)"`
 | |
| 	Status     int16
 | |
| 	IsStaff    bool
 | |
| 	IsActive   bool      `orm:"default(1)"`
 | |
| 	Created    time.Time `orm:"auto_now_add;type(date)"`
 | |
| 	Updated    time.Time `orm:"auto_now"`
 | |
| 	Profile    *Profile  `orm:"null;rel(one);on_delete(set_null)"`
 | |
| 	Posts      []*Post   `orm:"reverse(many)" json:"-"`
 | |
| 	ShouldSkip string    `orm:"-"`
 | |
| }
 | |
| 
 | |
| func NewUser() *User {
 | |
| 	obj := new(User)
 | |
| 	return obj
 | |
| }
 | |
| 
 | |
| type Profile struct {
 | |
| 	Id    int
 | |
| 	Age   int16
 | |
| 	Money float64
 | |
| 	User  *User `orm:"reverse(one)" json:"-"`
 | |
| }
 | |
| 
 | |
| func (u *Profile) TableName() string {
 | |
| 	return "user_profile"
 | |
| }
 | |
| 
 | |
| func NewProfile() *Profile {
 | |
| 	obj := new(Profile)
 | |
| 	return obj
 | |
| }
 | |
| 
 | |
| type Post struct {
 | |
| 	Id      int
 | |
| 	User    *User     `orm:"rel(fk)"`
 | |
| 	Title   string    `orm:"size(60)"`
 | |
| 	Content string    `orm:"type(text)"`
 | |
| 	Created time.Time `orm:"auto_now_add"`
 | |
| 	Updated time.Time `orm:"auto_now"`
 | |
| 	Tags    []*Tag    `orm:"rel(m2m)"`
 | |
| }
 | |
| 
 | |
| func NewPost() *Post {
 | |
| 	obj := new(Post)
 | |
| 	return obj
 | |
| }
 | |
| 
 | |
| type Tag struct {
 | |
| 	Id    int
 | |
| 	Name  string  `orm:"size(30)"`
 | |
| 	Posts []*Post `orm:"reverse(many)" json:"-"`
 | |
| }
 | |
| 
 | |
| func NewTag() *Tag {
 | |
| 	obj := new(Tag)
 | |
| 	return obj
 | |
| }
 | |
| 
 | |
| type Comment struct {
 | |
| 	Id      int
 | |
| 	Post    *Post     `orm:"rel(fk)"`
 | |
| 	Content string    `orm:"type(text)"`
 | |
| 	Parent  *Comment  `orm:"null;rel(fk)"`
 | |
| 	Created time.Time `orm:"auto_now_add"`
 | |
| }
 | |
| 
 | |
| func NewComment() *Comment {
 | |
| 	obj := new(Comment)
 | |
| 	return obj
 | |
| }
 | |
| 
 | |
| var DBARGS = struct {
 | |
| 	Driver string
 | |
| 	Source string
 | |
| 	Debug  string
 | |
| }{
 | |
| 	os.Getenv("ORM_DRIVER"),
 | |
| 	os.Getenv("ORM_SOURCE"),
 | |
| 	os.Getenv("ORM_DEBUG"),
 | |
| }
 | |
| 
 | |
| var (
 | |
| 	IsMysql    = DBARGS.Driver == "mysql"
 | |
| 	IsSqlite   = DBARGS.Driver == "sqlite3"
 | |
| 	IsPostgres = DBARGS.Driver == "postgres"
 | |
| )
 | |
| 
 | |
| var dORM Ormer
 | |
| 
 | |
| var initSQLs = map[string]string{
 | |
| 	"mysql": "DROP TABLE IF EXISTS `user_profile`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `user`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `post`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `tag`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `post_tags`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `comment`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `data`;\n" +
 | |
| 		"DROP TABLE IF EXISTS `data_null`;\n" +
 | |
| 		"CREATE TABLE `user_profile` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `age` smallint NOT NULL,\n" +
 | |
| 		"    `money` double precision NOT NULL\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `user` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `user_name` varchar(30) NOT NULL UNIQUE,\n" +
 | |
| 		"    `email` varchar(100) NOT NULL,\n" +
 | |
| 		"    `password` varchar(100) NOT NULL,\n" +
 | |
| 		"    `status` smallint NOT NULL,\n" +
 | |
| 		"    `is_staff` bool NOT NULL,\n" +
 | |
| 		"    `is_active` bool NOT NULL,\n" +
 | |
| 		"    `created` date NOT NULL,\n" +
 | |
| 		"    `updated` datetime NOT NULL,\n" +
 | |
| 		"    `profile_id` integer\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `post` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `user_id` integer NOT NULL,\n" +
 | |
| 		"    `title` varchar(60) NOT NULL,\n" +
 | |
| 		"    `content` longtext NOT NULL,\n" +
 | |
| 		"    `created` datetime NOT NULL,\n" +
 | |
| 		"    `updated` datetime NOT NULL\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `tag` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `name` varchar(30) NOT NULL\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `post_tags` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `post_id` integer NOT NULL,\n" +
 | |
| 		"    `tag_id` integer NOT NULL,\n" +
 | |
| 		"    UNIQUE (`post_id`, `tag_id`)\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `comment` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `post_id` integer NOT NULL,\n" +
 | |
| 		"    `content` longtext NOT NULL,\n" +
 | |
| 		"    `parent_id` integer,\n" +
 | |
| 		"    `created` datetime NOT NULL\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `data` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `boolean` bool NOT NULL,\n" +
 | |
| 		"    `char` varchar(50) NOT NULL,\n" +
 | |
| 		"    `text` longtext NOT NULL,\n" +
 | |
| 		"    `date` date NOT NULL,\n" +
 | |
| 		"    `date_time` datetime NOT NULL,\n" +
 | |
| 		"    `byte` tinyint unsigned NOT NULL,\n" +
 | |
| 		"    `rune` integer NOT NULL,\n" +
 | |
| 		"    `int` integer NOT NULL,\n" +
 | |
| 		"    `int8` tinyint NOT NULL,\n" +
 | |
| 		"    `int16` smallint NOT NULL,\n" +
 | |
| 		"    `int32` integer NOT NULL,\n" +
 | |
| 		"    `int64` bigint NOT NULL,\n" +
 | |
| 		"    `uint` integer unsigned NOT NULL,\n" +
 | |
| 		"    `uint8` tinyint unsigned NULL,\n" +
 | |
| 		"    `uint16` smallint unsigned NOT NULL,\n" +
 | |
| 		"    `uint32` integer unsigned NOT NULL,\n" +
 | |
| 		"    `uint64` bigint unsigned NOT NULL,\n" +
 | |
| 		"    `float32` double precision NOT NULL,\n" +
 | |
| 		"    `float64` double precision NOT NULL,\n" +
 | |
| 		"    `decimal` numeric(8,4) NOT NULL\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE TABLE `data_null` (\n" +
 | |
| 		"    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,\n" +
 | |
| 		"    `boolean` bool,\n" +
 | |
| 		"    `char` varchar(50),\n" +
 | |
| 		"    `text` longtext,\n" +
 | |
| 		"    `date` date,\n" +
 | |
| 		"    `date_time` datetime,\n" +
 | |
| 		"    `byte` tinyint unsigned,\n" +
 | |
| 		"    `rune` integer,\n" +
 | |
| 		"    `int` integer,\n" +
 | |
| 		"    `int8` tinyint,\n" +
 | |
| 		"    `int16` smallint,\n" +
 | |
| 		"    `int32` integer,\n" +
 | |
| 		"    `int64` bigint,\n" +
 | |
| 		"    `uint` integer unsigned,\n" +
 | |
| 		"    `uint8` tinyint unsigned,\n" +
 | |
| 		"    `uint16` smallint unsigned,\n" +
 | |
| 		"    `uint32` integer unsigned,\n" +
 | |
| 		"    `uint64` bigint unsigned,\n" +
 | |
| 		"    `float32` double precision,\n" +
 | |
| 		"    `float64` double precision,\n" +
 | |
| 		"    `decimal` numeric(8,4)\n" +
 | |
| 		") ENGINE=INNODB;\n" +
 | |
| 		"CREATE INDEX `user_141c6eec` ON `user` (`profile_id`);\n" +
 | |
| 		"CREATE INDEX `post_fbfc09f1` ON `post` (`user_id`);\n" +
 | |
| 		"CREATE INDEX `comment_699ae8ca` ON `comment` (`post_id`);\n" +
 | |
| 		"CREATE INDEX `comment_63f17a16` ON `comment` (`parent_id`);",
 | |
| 
 | |
| 	"sqlite3": `
 | |
| DROP TABLE IF EXISTS "user_profile";
 | |
| DROP TABLE IF EXISTS "user";
 | |
| DROP TABLE IF EXISTS "post";
 | |
| DROP TABLE IF EXISTS "tag";
 | |
| DROP TABLE IF EXISTS "post_tags";
 | |
| DROP TABLE IF EXISTS "comment";
 | |
| DROP TABLE IF EXISTS "data";
 | |
| DROP TABLE IF EXISTS "data_null";
 | |
| CREATE TABLE "user_profile" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "age" smallint NOT NULL,
 | |
|     "money" real NOT NULL
 | |
| );
 | |
| CREATE TABLE "user" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "user_name" varchar(30) NOT NULL UNIQUE,
 | |
|     "email" varchar(100) NOT NULL,
 | |
|     "password" varchar(100) NOT NULL,
 | |
|     "status" smallint NOT NULL,
 | |
|     "is_staff" bool NOT NULL,
 | |
|     "is_active" bool NOT NULL,
 | |
|     "created" date NOT NULL,
 | |
|     "updated" datetime NOT NULL,
 | |
|     "profile_id" integer
 | |
| );
 | |
| CREATE TABLE "post" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "user_id" integer NOT NULL,
 | |
|     "title" varchar(60) NOT NULL,
 | |
|     "content" text NOT NULL,
 | |
|     "created" datetime NOT NULL,
 | |
|     "updated" datetime NOT NULL
 | |
| );
 | |
| CREATE TABLE "tag" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "name" varchar(30) NOT NULL
 | |
| );
 | |
| CREATE TABLE "post_tags" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "post_id" integer NOT NULL,
 | |
|     "tag_id" integer NOT NULL,
 | |
|     UNIQUE ("post_id", "tag_id")
 | |
| );
 | |
| CREATE TABLE "comment" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "post_id" integer NOT NULL,
 | |
|     "content" text NOT NULL,
 | |
|     "parent_id" integer,
 | |
|     "created" datetime NOT NULL
 | |
| );
 | |
| CREATE TABLE "data" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "boolean" bool NOT NULL,
 | |
|     "char" varchar(50) NOT NULL,
 | |
|     "text" text NOT NULL,
 | |
|     "date" date NOT NULL,
 | |
|     "date_time" datetime NOT NULL,
 | |
|     "byte" tinyint unsigned NOT NULL,
 | |
|     "rune" integer NOT NULL,
 | |
|     "int" integer NOT NULL,
 | |
|     "int8" tinyint NOT NULL,
 | |
|     "int16" smallint NOT NULL,
 | |
|     "int32" integer NOT NULL,
 | |
|     "int64" bigint NOT NULL,
 | |
|     "uint" integer unsigned NOT NULL,
 | |
|     "uint8" tinyint unsigned NOT NULL,
 | |
|     "uint16" smallint unsigned NOT NULL,
 | |
|     "uint32" integer unsigned NOT NULL,
 | |
|     "uint64" bigint unsigned NOT NULL,
 | |
|     "float32" real NOT NULL,
 | |
|     "float64" real NOT NULL,
 | |
|     "decimal" decimal
 | |
| );
 | |
| CREATE TABLE "data_null" (
 | |
|     "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
 | |
|     "boolean" bool,
 | |
|     "char" varchar(50),
 | |
|     "text" text,
 | |
|     "date" date,
 | |
|     "date_time" datetime,
 | |
|     "byte" tinyint unsigned,
 | |
|     "rune" integer,
 | |
|     "int" integer,
 | |
|     "int8" tinyint,
 | |
|     "int16" smallint,
 | |
|     "int32" integer,
 | |
|     "int64" bigint,
 | |
|     "uint" integer unsigned,
 | |
|     "uint8" tinyint unsigned,
 | |
|     "uint16" smallint unsigned,
 | |
|     "uint32" integer unsigned,
 | |
|     "uint64" bigint unsigned,
 | |
|     "float32" real,
 | |
|     "float64" real,
 | |
|     "decimal" decimal
 | |
| );
 | |
| CREATE INDEX "user_141c6eec" ON "user" ("profile_id");
 | |
| CREATE INDEX "post_fbfc09f1" ON "post" ("user_id");
 | |
| CREATE INDEX "comment_699ae8ca" ON "comment" ("post_id");
 | |
| CREATE INDEX "comment_63f17a16" ON "comment" ("parent_id");
 | |
| `,
 | |
| 
 | |
| 	"postgres": `
 | |
| DROP TABLE IF EXISTS "user_profile";
 | |
| DROP TABLE IF EXISTS "user";
 | |
| DROP TABLE IF EXISTS "post";
 | |
| DROP TABLE IF EXISTS "tag";
 | |
| DROP TABLE IF EXISTS "post_tags";
 | |
| DROP TABLE IF EXISTS "comment";
 | |
| DROP TABLE IF EXISTS "data";
 | |
| DROP TABLE IF EXISTS "data_null";
 | |
| CREATE TABLE "user_profile" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "age" smallint NOT NULL,
 | |
|     "money" double precision NOT NULL
 | |
| );
 | |
| CREATE TABLE "user" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "user_name" varchar(30) NOT NULL UNIQUE,
 | |
|     "email" varchar(100) NOT NULL,
 | |
|     "password" varchar(100) NOT NULL,
 | |
|     "status" smallint NOT NULL,
 | |
|     "is_staff" boolean NOT NULL,
 | |
|     "is_active" boolean NOT NULL,
 | |
|     "created" date NOT NULL,
 | |
|     "updated" timestamp with time zone NOT NULL,
 | |
|     "profile_id" integer
 | |
| );
 | |
| CREATE TABLE "post" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "user_id" integer NOT NULL,
 | |
|     "title" varchar(60) NOT NULL,
 | |
|     "content" text NOT NULL,
 | |
|     "created" timestamp with time zone NOT NULL,
 | |
|     "updated" timestamp with time zone NOT NULL
 | |
| );
 | |
| CREATE TABLE "tag" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "name" varchar(30) NOT NULL
 | |
| );
 | |
| CREATE TABLE "post_tags" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "post_id" integer NOT NULL,
 | |
|     "tag_id" integer NOT NULL,
 | |
|     UNIQUE ("post_id", "tag_id")
 | |
| );
 | |
| CREATE TABLE "comment" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "post_id" integer NOT NULL,
 | |
|     "content" text NOT NULL,
 | |
|     "parent_id" integer,
 | |
|     "created" timestamp with time zone NOT NULL
 | |
| );
 | |
| CREATE TABLE "data" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "boolean" bool NOT NULL,
 | |
|     "char" varchar(50) NOT NULL,
 | |
|     "text" text NOT NULL,
 | |
|     "date" date NOT NULL,
 | |
|     "date_time" timestamp with time zone NOT NULL,
 | |
|     "byte" smallint CHECK("byte" >= 0 AND "byte" <= 255) NOT NULL,
 | |
|     "rune" integer NOT NULL,
 | |
|     "int" integer NOT NULL,
 | |
|     "int8" smallint CHECK("int8" >= -127 AND "int8" <= 128) NOT NULL,
 | |
|     "int16" smallint NOT NULL,
 | |
|     "int32" integer NOT NULL,
 | |
|     "int64" bigint NOT NULL,
 | |
|     "uint" bigint CHECK("uint" >= 0) NOT NULL,
 | |
|     "uint8" smallint CHECK("uint8" >= 0 AND "uint8" <= 255) NOT NULL,
 | |
|     "uint16" integer CHECK("uint16" >= 0) NOT NULL,
 | |
|     "uint32" bigint CHECK("uint32" >= 0) NOT NULL,
 | |
|     "uint64" bigint CHECK("uint64" >= 0) NOT NULL,
 | |
|     "float32" double precision NOT NULL,
 | |
|     "float64" double precision NOT NULL,
 | |
|     "decimal" numeric(8, 4)
 | |
| );
 | |
| CREATE TABLE "data_null" (
 | |
|     "id" serial NOT NULL PRIMARY KEY,
 | |
|     "boolean" bool,
 | |
|     "char" varchar(50),
 | |
|     "text" text,
 | |
|     "date" date,
 | |
|     "date_time" timestamp with time zone,
 | |
|     "byte" smallint CHECK("byte" >= 0 AND "byte" <= 255),
 | |
|     "rune" integer,
 | |
|     "int" integer,
 | |
|     "int8" smallint CHECK("int8" >= -127 AND "int8" <= 128),
 | |
|     "int16" smallint,
 | |
|     "int32" integer,
 | |
|     "int64" bigint,
 | |
|     "uint" bigint CHECK("uint" >= 0),
 | |
|     "uint8" smallint CHECK("uint8" >= 0 AND "uint8" <= 255),
 | |
|     "uint16" integer CHECK("uint16" >= 0),
 | |
|     "uint32" bigint CHECK("uint32" >= 0),
 | |
|     "uint64" bigint CHECK("uint64" >= 0),
 | |
|     "float32" double precision,
 | |
|     "float64" double precision,
 | |
|     "decimal" numeric(8, 4)
 | |
| );
 | |
| CREATE INDEX "user_profile_id" ON "user" ("profile_id");
 | |
| CREATE INDEX "post_user_id" ON "post" ("user_id");
 | |
| CREATE INDEX "comment_post_id" ON "comment" ("post_id");
 | |
| CREATE INDEX "comment_parent_id" ON "comment" ("parent_id");
 | |
| `}
 | |
| 
 | |
| func init() {
 | |
| 	// err := os.Setenv("TZ", "+00:00")
 | |
| 	// fmt.Println(err)
 | |
| 
 | |
| 	RegisterModel(new(Data), new(DataNull))
 | |
| 	RegisterModel(new(User))
 | |
| 	RegisterModel(new(Profile))
 | |
| 	RegisterModel(new(Post))
 | |
| 	RegisterModel(new(Tag))
 | |
| 	RegisterModel(new(Comment))
 | |
| 
 | |
| 	Debug, _ = StrTo(DBARGS.Debug).Bool()
 | |
| 
 | |
| 	if DBARGS.Driver == "" || DBARGS.Source == "" {
 | |
| 		fmt.Println(`need driver and source!
 | |
| 
 | |
| Default DB Drivers.
 | |
| 
 | |
|   driver: url
 | |
|    mysql: https://github.com/go-sql-driver/mysql
 | |
|  sqlite3: https://github.com/mattn/go-sqlite3
 | |
| postgres: https://github.com/lib/pq
 | |
| 
 | |
| eg: mysql
 | |
| ORM_DRIVER=mysql ORM_SOURCE="root:root@/my_db?charset=utf8" go test github.com/astaxie/beego/orm
 | |
| `)
 | |
| 		os.Exit(2)
 | |
| 	}
 | |
| 
 | |
| 	RegisterDataBase("default", DBARGS.Driver, DBARGS.Source, 20)
 | |
| 
 | |
| 	BootStrap()
 | |
| 
 | |
| 	dORM = NewOrm()
 | |
| 
 | |
| 	queries := strings.Split(initSQLs[DBARGS.Driver], ";")
 | |
| 
 | |
| 	for _, query := range queries {
 | |
| 		query = strings.TrimSpace(query)
 | |
| 		if len(query) == 0 {
 | |
| 			continue
 | |
| 		}
 | |
| 		_, err := dORM.Raw(query).Exec()
 | |
| 		if err != nil {
 | |
| 			fmt.Println(err)
 | |
| 			os.Exit(2)
 | |
| 		}
 | |
| 	}
 | |
| }
 |