mirror of
http://github.com/goal-web/database
synced 2024-05-03 09:25:24 +08:00
feat: 升级契约
This commit is contained in:
parent
e70192a18a
commit
f949856e1d
@ -10,10 +10,10 @@ type QueryExecuted struct {
|
||||
Error error
|
||||
}
|
||||
|
||||
func (this *QueryExecuted) Event() string {
|
||||
func (event *QueryExecuted) Event() string {
|
||||
return "QUERY_EXECUTED"
|
||||
}
|
||||
|
||||
func (this *QueryExecuted) Sync() bool {
|
||||
func (event *QueryExecuted) Sync() bool {
|
||||
return true
|
||||
}
|
||||
|
26
go.mod
26
go.mod
@ -1,37 +1,35 @@
|
||||
module github.com/goal-web/database
|
||||
|
||||
go 1.19
|
||||
go 1.20
|
||||
|
||||
require (
|
||||
github.com/ClickHouse/clickhouse-go/v2 v2.0.9
|
||||
github.com/go-sql-driver/mysql v1.5.0
|
||||
github.com/goal-web/application v0.1.6
|
||||
github.com/goal-web/collection v0.1.6
|
||||
github.com/goal-web/config v0.1.4
|
||||
github.com/goal-web/contracts v0.1.66
|
||||
github.com/goal-web/querybuilder v0.1.19
|
||||
github.com/goal-web/supports v0.1.32
|
||||
github.com/goal-web/application v0.2.0
|
||||
github.com/goal-web/collection v0.2.0
|
||||
github.com/goal-web/config v0.2.0
|
||||
github.com/goal-web/contracts v0.2.0
|
||||
github.com/goal-web/querybuilder v0.2.0
|
||||
github.com/goal-web/supports v0.2.0
|
||||
github.com/jmoiron/sqlx v1.3.4
|
||||
github.com/lib/pq v1.10.4
|
||||
github.com/mattn/go-sqlite3 v1.14.10
|
||||
github.com/stretchr/testify v1.7.0
|
||||
github.com/stretchr/testify v1.8.1
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/BurntSushi/toml v1.2.1 // indirect
|
||||
github.com/apex/log v1.9.0 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/goal-web/container v0.1.7 // indirect
|
||||
github.com/goal-web/container v0.2.0 // indirect
|
||||
github.com/google/uuid v1.3.0 // indirect
|
||||
github.com/kr/pretty v0.3.0 // indirect
|
||||
github.com/joho/godotenv v1.5.1 // indirect
|
||||
github.com/paulmach/orb v0.4.0 // indirect
|
||||
github.com/pierrec/lz4/v4 v4.1.14 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/qbhy/parallel v1.4.0 // indirect
|
||||
github.com/rogpeppe/go-internal v1.8.0 // indirect
|
||||
github.com/shopspring/decimal v1.3.1 // indirect
|
||||
go.opentelemetry.io/otel v1.3.0 // indirect
|
||||
go.opentelemetry.io/otel/trace v1.3.0 // indirect
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
44
go.sum
44
go.sum
@ -1,3 +1,5 @@
|
||||
github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak=
|
||||
github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/ClickHouse/clickhouse-go v1.5.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI=
|
||||
github.com/ClickHouse/clickhouse-go/v2 v2.0.9 h1:JKtF6JlROrcdZRMoQUTv6fW8CBSL9FiBKylXXQx5YnY=
|
||||
github.com/ClickHouse/clickhouse-go/v2 v2.0.9/go.mod h1:FfiBHxYkESSf1DQxROQ1kOP2XtI4Fy8XDVPasZSkI+k=
|
||||
@ -24,20 +26,20 @@ github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNI
|
||||
github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
|
||||
github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
|
||||
github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
|
||||
github.com/goal-web/application v0.1.6 h1:vrTywkConbygpQeuU8Q2B+8sLhiOUgCbeXkyuxgHPCA=
|
||||
github.com/goal-web/application v0.1.6/go.mod h1:PAJkAJgmcNchOtxt9JhnDC8SenBozybHQhdbnoki4Jk=
|
||||
github.com/goal-web/collection v0.1.6 h1:iSSV/EDHbMjL+o4Izvb+WnLNE2rp3HFF+q/iX7C0rQg=
|
||||
github.com/goal-web/collection v0.1.6/go.mod h1:LuRggZs0gtBZpcIEVx3Kp2qkcxc/v/EcmSob8vpVe+Q=
|
||||
github.com/goal-web/config v0.1.4 h1:I6EGxIysMxhwY8SPb4m51y5TvHvp1grCGk43JnhIaaQ=
|
||||
github.com/goal-web/config v0.1.4/go.mod h1:qGCe2bCxt35LOjs12e8H9ZWYcaFbOet/naaoPcAFz8g=
|
||||
github.com/goal-web/container v0.1.7 h1:LqAzF6vYh7sxpJgDGWzOg9t6tKbUbG3F+VBnBLl/KSo=
|
||||
github.com/goal-web/container v0.1.7/go.mod h1:4NNbVCrfeFW/dM02PNm1brRF7/xAsrlkKWongztTszc=
|
||||
github.com/goal-web/contracts v0.1.66 h1:X6nCPHLJXNkmfiYejd4zO78JCTGoaluBNQK/GmwUT0A=
|
||||
github.com/goal-web/contracts v0.1.66/go.mod h1:lKHynU2Kgk6xyxL4afOJM4TO1kSa3RrCJ2bm5RtFMBw=
|
||||
github.com/goal-web/querybuilder v0.1.19 h1:gtO3vUau3nNYe+LN0z6Im6rJLk2tjFum/qX9ZoQVIOE=
|
||||
github.com/goal-web/querybuilder v0.1.19/go.mod h1:famub4R/ZBsQAx2d6Cw131pd9J+6img2eZJh5qisXak=
|
||||
github.com/goal-web/supports v0.1.32 h1:gB+nbrcnTJwwSHakkJTDI15y8Vaj6sx3ToGUwo7vOnE=
|
||||
github.com/goal-web/supports v0.1.32/go.mod h1:tdfY3NY4HenWU3WE7wZT0E1AljwRKWL7TgD4jL+yUoA=
|
||||
github.com/goal-web/application v0.2.0 h1:MwVgbqF1rxkANIpVfHckA+vXk4e7B2a5EvQ78G5Eijg=
|
||||
github.com/goal-web/application v0.2.0/go.mod h1:vZ1C82GW3ptlFiEYG1PchKu7ndbKEeMizQZqOfu/1vk=
|
||||
github.com/goal-web/collection v0.2.0 h1:ERuNDxATTwqAp8Xuxm5CxoU+LEmLIxIZHQVQ7QrGmsY=
|
||||
github.com/goal-web/collection v0.2.0/go.mod h1:o2/CYlKwQzUVluRbMsGh/v8nJy44bOdwpEhQDJvJM1I=
|
||||
github.com/goal-web/config v0.2.0 h1:gp3pqJHoprLfu2nmgPkf/ul2M8iHpvlYkhWVL1NIyl4=
|
||||
github.com/goal-web/config v0.2.0/go.mod h1:C9r93RzqRLAXoYxnxjjO9NeAgU3xN6zqDwkLO+n7y3E=
|
||||
github.com/goal-web/container v0.2.0 h1:kiDhpOzXbvTvUbXCMqukXzNlHxMSW2VTMMcDisj33XA=
|
||||
github.com/goal-web/container v0.2.0/go.mod h1:2ziPdY9aQjdeHYGoxK19V24du/DDUc/QxRb9bszGaFc=
|
||||
github.com/goal-web/contracts v0.2.0 h1:CAk+mLD2dC//DiCV9TAUSN1zopWSrPZ8+/vCxs+cu8E=
|
||||
github.com/goal-web/contracts v0.2.0/go.mod h1:33koNCIiQ7GzBmYycynenVtv5E+Jq7lWGZ8vKi5uXJQ=
|
||||
github.com/goal-web/querybuilder v0.2.0 h1:k6f4AolmF0fSiN009ff9Q3Vef5wJU+C92TTZG1MWl28=
|
||||
github.com/goal-web/querybuilder v0.2.0/go.mod h1:+eajJiTfWLbJRxKnfoNKwL8G0RbxwIkbh2drExih+Dc=
|
||||
github.com/goal-web/supports v0.2.0 h1:I1MuDcyOSo9JJprXwvyPeV99kn/Zs/VQEM7dDsv6VyY=
|
||||
github.com/goal-web/supports v0.2.0/go.mod h1:OZFq18eCd+9atA7re2gbNMZ2zWGdpuSS8WmCRsqhGm4=
|
||||
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
|
||||
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||
@ -55,6 +57,8 @@ github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht
|
||||
github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
|
||||
github.com/jmoiron/sqlx v1.3.4 h1:wv+0IJZfL5z0uZoUjlpKgHkgaFSYD+r9CfrXjEXsO7w=
|
||||
github.com/jmoiron/sqlx v1.3.4/go.mod h1:2BljVx/86SuTyjE+aPYlHCTNvZrnJXghYGpNiXLBMCQ=
|
||||
github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0=
|
||||
github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4=
|
||||
github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0=
|
||||
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
@ -89,9 +93,9 @@ github.com/pierrec/lz4/v4 v4.1.14 h1:+fL8AQEZtz/ijeNnpduH0bROTu0O3NZAlPjQxGn8LwE
|
||||
github.com/pierrec/lz4/v4 v4.1.14/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||
github.com/qbhy/parallel v1.4.0 h1:RvdjXbxIRNMG2lA6gkaEOgVhr7JbNy4BljabsD+u9JI=
|
||||
github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
|
||||
github.com/rogpeppe/go-internal v1.8.0 h1:FCbCCtXNOY3UtUuHUYaghJg4y7Fd14rXifAYUAtL9R8=
|
||||
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
|
||||
@ -103,11 +107,16 @@ github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUr
|
||||
github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
|
||||
github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
|
||||
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
|
||||
github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0=
|
||||
github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk=
|
||||
github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk=
|
||||
@ -165,5 +174,6 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
|
@ -1,7 +0,0 @@
|
||||
package model
|
||||
|
||||
import "github.com/goal-web/contracts"
|
||||
|
||||
type Model struct {
|
||||
class contracts.Class
|
||||
}
|
@ -1,156 +0,0 @@
|
||||
package schema
|
||||
|
||||
import "github.com/goal-web/supports/utils"
|
||||
|
||||
type Blueprint struct {
|
||||
Columns []*ColumnDefinition
|
||||
Table string
|
||||
}
|
||||
|
||||
func (bp *Blueprint) AddColumn(typeValue, name string) *ColumnDefinition {
|
||||
column := &ColumnDefinition{TypeValue: typeValue, Name: name, Table: bp.Table}
|
||||
bp.Columns = append(bp.Columns, column)
|
||||
return column
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Id(name ...string) *ColumnDefinition {
|
||||
return bp.BigInteger(utils.DefaultString(name, "id")).Unsigned().AutoIncrement()
|
||||
}
|
||||
|
||||
func (bp *Blueprint) BigInteger(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("bigInteger", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Integer(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("integer", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) TinyInteger(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("tinyInteger", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) SmallInteger(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("smallInteger", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) MediumInteger(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("mediumInteger", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Float(name string, args ...int) *ColumnDefinition {
|
||||
var total, places = 8, 2
|
||||
switch len(args) {
|
||||
case 1:
|
||||
total = args[0]
|
||||
case 2:
|
||||
total = args[0]
|
||||
places = args[1]
|
||||
}
|
||||
return bp.AddColumn("float", name).Float(total, places)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Double(name string, args ...int) *ColumnDefinition {
|
||||
var total, places = 8, 2
|
||||
switch len(args) {
|
||||
case 1:
|
||||
total = args[0]
|
||||
case 2:
|
||||
total = args[0]
|
||||
places = args[1]
|
||||
}
|
||||
return bp.AddColumn("double", name).Float(total, places)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Decimal(name string, args ...int) *ColumnDefinition {
|
||||
var total, places = 8, 2
|
||||
switch len(args) {
|
||||
case 1:
|
||||
total = args[0]
|
||||
case 2:
|
||||
total = args[0]
|
||||
places = args[1]
|
||||
}
|
||||
return bp.AddColumn("decimal", name).Float(total, places)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Boolean(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("boolean", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Json(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("json", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Jsonb(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("jsonb", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Date(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("date", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Datetime(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("dateTime", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) DatetimeTz(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("dateTimeTz", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Time(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("time", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) TimeTz(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("timeTz", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Timestamp(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("timestamp", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) TimestampTz(name string, precision ...int) *ColumnDefinition {
|
||||
return bp.AddColumn("timestampTz", name).Precision(utils.DefaultInt(precision))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Timestamps(precision ...int) {
|
||||
bp.Timestamp("created_at").Precision(utils.DefaultInt(precision)).Nullable()
|
||||
bp.Timestamp("updated_at").Precision(utils.DefaultInt(precision)).Nullable()
|
||||
}
|
||||
|
||||
func (bp *Blueprint) TimestampsTz(precision ...int) {
|
||||
bp.TimestampTz("created_at").Precision(utils.DefaultInt(precision)).Nullable()
|
||||
bp.TimestampTz("updated_at").Precision(utils.DefaultInt(precision)).Nullable()
|
||||
}
|
||||
|
||||
func (bp *Blueprint) SoftDeletes(name ...string) *ColumnDefinition {
|
||||
return bp.Timestamp(utils.DefaultString(name, "deleted_at")).Nullable()
|
||||
}
|
||||
|
||||
func (bp *Blueprint) SoftDeletesTz(name ...string) *ColumnDefinition {
|
||||
return bp.TimestampTz(utils.DefaultString(name, "deleted_at")).Nullable()
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Year(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("year", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Binary(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("binary", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Uuid(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("uuid", name)
|
||||
}
|
||||
|
||||
func (bp *Blueprint) IpAddress(name ...string) *ColumnDefinition {
|
||||
return bp.AddColumn("ipAddress", utils.DefaultString(name, "ip_address"))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) MacAddress(name ...string) *ColumnDefinition {
|
||||
return bp.AddColumn("macAddress", utils.DefaultString(name, "mac_address"))
|
||||
}
|
||||
|
||||
func (bp *Blueprint) Geometry(name string) *ColumnDefinition {
|
||||
return bp.AddColumn("geometry", name)
|
||||
}
|
227
schema/column.go
227
schema/column.go
@ -1,227 +0,0 @@
|
||||
package schema
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/goal-web/querybuilder"
|
||||
)
|
||||
|
||||
type ColumnDefinition struct {
|
||||
Name string
|
||||
Table string
|
||||
AfterColumn string
|
||||
IsAutoIncrement bool
|
||||
IsChange bool
|
||||
CharsetValue string
|
||||
CollationValue string
|
||||
CommentValue string
|
||||
DefaultValue any
|
||||
IsFirst bool
|
||||
StartValue int
|
||||
IndexName string
|
||||
FulltextIndexName string
|
||||
SpatialIndexName string
|
||||
UniqueIndexName string
|
||||
IsInvisible bool
|
||||
IsNullable bool
|
||||
IsPersisted bool
|
||||
IsPrimary bool
|
||||
StoredAsExpression string
|
||||
TypeValue string
|
||||
IsUnsigned bool
|
||||
IsUseCurrent bool
|
||||
IsUseCurrentOnUpdate bool
|
||||
VirtualAsExpression string
|
||||
// float
|
||||
TotalValue int // 总长度
|
||||
PlacesValue int // 小数点长度
|
||||
|
||||
// time
|
||||
PrecisionValue int
|
||||
}
|
||||
|
||||
// After Place the column "after" another column (MySQL)
|
||||
func (column *ColumnDefinition) After(columnName string) *ColumnDefinition {
|
||||
column.AfterColumn = columnName
|
||||
return column
|
||||
}
|
||||
|
||||
// Always Used as a modifier for generatedAs()(PostgreSQL)
|
||||
func (column *ColumnDefinition) Always(value ...bool) *ColumnDefinition {
|
||||
// TODO
|
||||
return column
|
||||
}
|
||||
|
||||
// AutoIncrement Set INTEGER columns as auto-increment (primary key)
|
||||
func (column *ColumnDefinition) AutoIncrement() *ColumnDefinition {
|
||||
column.IsAutoIncrement = true
|
||||
return column
|
||||
}
|
||||
|
||||
// Change the column
|
||||
func (column *ColumnDefinition) Change() *ColumnDefinition {
|
||||
column.IsChange = true
|
||||
return column
|
||||
}
|
||||
|
||||
// Charset Specify a character set for the column (MySQL)
|
||||
func (column *ColumnDefinition) Charset(charset string) *ColumnDefinition {
|
||||
column.CharsetValue = charset
|
||||
return column
|
||||
}
|
||||
|
||||
// Collation Specify a collation for the column (MySQL/PostgreSQL/SQL Server)
|
||||
func (column *ColumnDefinition) Collation(collation string) *ColumnDefinition {
|
||||
column.CollationValue = collation
|
||||
return column
|
||||
}
|
||||
|
||||
// Comment Add a comment to the column (MySQL/PostgreSQL)
|
||||
func (column *ColumnDefinition) Comment(comment string) *ColumnDefinition {
|
||||
column.CommentValue = comment
|
||||
return column
|
||||
}
|
||||
|
||||
// Default Specify a "default" value for the column
|
||||
func (column *ColumnDefinition) Default(value any) *ColumnDefinition {
|
||||
column.DefaultValue = value
|
||||
return column
|
||||
}
|
||||
|
||||
// First Place the column "first" in the table (MySQL)
|
||||
func (column *ColumnDefinition) First() *ColumnDefinition {
|
||||
column.IsFirst = true
|
||||
return column
|
||||
}
|
||||
|
||||
// From Set the starting value of an auto-incrementing field (MySQL / PostgreSQL)
|
||||
func (column *ColumnDefinition) From(startingValue int) *ColumnDefinition {
|
||||
column.StartValue = startingValue
|
||||
return column
|
||||
}
|
||||
|
||||
// GeneratedAs Create a SQL compliant identity column (PostgreSQL)
|
||||
func (column *ColumnDefinition) GeneratedAs(expression ...querybuilder.Expression) *ColumnDefinition {
|
||||
// TODO
|
||||
return column
|
||||
}
|
||||
|
||||
// Index Add an index
|
||||
func (column *ColumnDefinition) Index(indexName ...string) *ColumnDefinition {
|
||||
if len(indexName) > 0 {
|
||||
column.IndexName = indexName[0]
|
||||
} else {
|
||||
column.IndexName = fmt.Sprintf("%s_%s_index", column.Table, column.Name)
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
// Invisible Specify that the column should be invisible to "SELECT *" (MySQL)
|
||||
func (column *ColumnDefinition) Invisible() *ColumnDefinition {
|
||||
column.IsInvisible = true
|
||||
return column
|
||||
}
|
||||
|
||||
// Nullable Allow NULL values to be inserted into the column
|
||||
func (column *ColumnDefinition) Nullable(value ...bool) *ColumnDefinition {
|
||||
if len(value) > 0 {
|
||||
column.IsNullable = value[0]
|
||||
} else {
|
||||
column.IsNullable = true
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
// Persisted Mark the computed generated column as persistent (SQL Server)
|
||||
func (column *ColumnDefinition) Persisted() *ColumnDefinition {
|
||||
column.IsPersisted = true
|
||||
return column
|
||||
}
|
||||
|
||||
// Primary Add a primary index
|
||||
func (column *ColumnDefinition) Primary() *ColumnDefinition {
|
||||
column.IsPrimary = true
|
||||
return column
|
||||
}
|
||||
|
||||
// Fulltext Add a fulltext index
|
||||
func (column *ColumnDefinition) Fulltext(indexName ...string) *ColumnDefinition {
|
||||
if len(indexName) > 0 {
|
||||
column.FulltextIndexName = indexName[0]
|
||||
} else {
|
||||
column.FulltextIndexName = fmt.Sprintf("%s_%s_fulltext_index", column.Table, column.Name)
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
// SpatialIndex Add a spatial index
|
||||
func (column *ColumnDefinition) SpatialIndex(indexName ...string) *ColumnDefinition {
|
||||
if len(indexName) > 0 {
|
||||
column.SpatialIndexName = indexName[0]
|
||||
} else {
|
||||
column.SpatialIndexName = fmt.Sprintf("%s_%s_spatial_index", column.Table, column.Name)
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
// StartingValue create a stored generated column (MySQL/PostgreSQL/SQLite)
|
||||
func (column *ColumnDefinition) StartingValue(startingValue int) *ColumnDefinition {
|
||||
// TODO
|
||||
return column
|
||||
}
|
||||
|
||||
// StoredAs Create a stored generated column (MySQL/PostgreSQL/SQLite)
|
||||
func (column *ColumnDefinition) StoredAs(expression string) *ColumnDefinition {
|
||||
column.StoredAsExpression = expression
|
||||
return column
|
||||
}
|
||||
|
||||
// Type Specify a type for the column
|
||||
func (column *ColumnDefinition) Type(typeValue string) *ColumnDefinition {
|
||||
column.TypeValue = typeValue
|
||||
return column
|
||||
}
|
||||
|
||||
// Unique Add a unique index
|
||||
func (column *ColumnDefinition) Unique(indexName ...string) *ColumnDefinition {
|
||||
if len(indexName) > 0 {
|
||||
column.UniqueIndexName = indexName[0]
|
||||
} else {
|
||||
column.UniqueIndexName = fmt.Sprintf("%s_%s_unique_index", column.Table, column.Name)
|
||||
}
|
||||
return column
|
||||
}
|
||||
|
||||
// Unsigned Set the INTEGER column as UNSIGNED (MySQL)
|
||||
func (column *ColumnDefinition) Unsigned() *ColumnDefinition {
|
||||
column.IsUnsigned = true
|
||||
return column
|
||||
}
|
||||
|
||||
func (column *ColumnDefinition) Float(total, places int) *ColumnDefinition {
|
||||
column.TotalValue = total
|
||||
column.PlacesValue = places
|
||||
return column
|
||||
}
|
||||
|
||||
// UseCurrent Set the TIMESTAMP column to use CURRENT_TIMESTAMP as default value
|
||||
func (column *ColumnDefinition) UseCurrent() *ColumnDefinition {
|
||||
column.IsUseCurrent = true
|
||||
return column
|
||||
}
|
||||
|
||||
// UseCurrentOnUpdate Set the TIMESTAMP column to use CURRENT_TIMESTAMP when updating (MySQL)
|
||||
func (column *ColumnDefinition) UseCurrentOnUpdate() *ColumnDefinition {
|
||||
column.IsUseCurrentOnUpdate = true
|
||||
return column
|
||||
}
|
||||
|
||||
// VirtualAs Create a virtual generated column (MySQL/PostgreSQL/SQLite)
|
||||
func (column *ColumnDefinition) VirtualAs(expression string) *ColumnDefinition {
|
||||
column.VirtualAsExpression = expression
|
||||
return column
|
||||
}
|
||||
|
||||
func (column *ColumnDefinition) Precision(precision int) *ColumnDefinition {
|
||||
column.PrecisionValue = precision
|
||||
return column
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
package schema
|
||||
|
||||
func Create(table string, callback func()) error {
|
||||
// TODO
|
||||
return nil
|
||||
}
|
Loading…
Reference in New Issue
Block a user