EM-4027: Remove references to jinzhu from embroker/gorm

This commit is contained in:
Casey Allen Shobe 2016-12-02 17:08:33 -08:00
parent 742de83e9e
commit 02028e8300
11 changed files with 89 additions and 92 deletions

139
README.md
View File

@ -25,7 +25,7 @@ The fantastic ORM library for Golang, aims to be developer friendly.
## Install
```
go get -u github.com/jinzhu/gorm
go get -u github.com/embroker/gorm
```
## Define Models (Structs)
@ -104,7 +104,7 @@ type User struct {
```go
import (
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
_ "github.com/lib/pq"
_ "github.com/go-sql-driver/mysql"
_ "github.com/mattn/go-sqlite3"
@ -164,10 +164,10 @@ db.NewRecord(user) // => return `false` after `user` created
// Associations will be inserted automatically when save the record
user := User{
Name: "jinzhu",
Name: "embroker",
BillingAddress: Address{Address1: "Billing Address - Address 1"},
ShippingAddress: Address{Address1: "Shipping Address - Address 1"},
Emails: []Email{{Email: "jinzhu@example.com"}, {Email: "jinzhu-2@example@example.com"}},
Emails: []Email{{Email: "embroker@example.com"}, {Email: "embroker-2@example@example.com"}},
Languages: []Language{{Name: "ZH"}, {Name: "EN"}},
}
@ -175,9 +175,9 @@ db.Create(&user)
//// BEGIN TRANSACTION;
//// INSERT INTO "addresses" (address1) VALUES ("Billing Address - Address 1");
//// INSERT INTO "addresses" (address1) VALUES ("Shipping Address - Address 1");
//// INSERT INTO "users" (name,billing_address_id,shipping_address_id) VALUES ("jinzhu", 1, 2);
//// INSERT INTO "emails" (user_id,email) VALUES (111, "jinzhu@example.com");
//// INSERT INTO "emails" (user_id,email) VALUES (111, "jinzhu-2@example.com");
//// INSERT INTO "users" (name,billing_address_id,shipping_address_id) VALUES ("embroker", 1, 2);
//// INSERT INTO "emails" (user_id,email) VALUES (111, "embroker@example.com");
//// INSERT INTO "emails" (user_id,email) VALUES (111, "embroker-2@example.com");
//// INSERT INTO "languages" ("name") VALUES ('ZH');
//// INSERT INTO user_languages ("user_id","language_id") VALUES (111, 1);
//// INSERT INTO "languages" ("name") VALUES ('EN');
@ -211,23 +211,23 @@ db.First(&user, 10)
```go
// Get the first matched record
db.Where("name = ?", "jinzhu").First(&user)
//// SELECT * FROM users WHERE name = 'jinzhu' limit 1;
db.Where("name = ?", "embroker").First(&user)
//// SELECT * FROM users WHERE name = 'embroker' limit 1;
// Get all matched records
db.Where("name = ?", "jinzhu").Find(&users)
//// SELECT * FROM users WHERE name = 'jinzhu';
db.Where("name = ?", "embroker").Find(&users)
//// SELECT * FROM users WHERE name = 'embroker';
db.Where("name <> ?", "jinzhu").Find(&users)
db.Where("name <> ?", "embroker").Find(&users)
// IN
db.Where("name in (?)", []string{"jinzhu", "jinzhu 2"}).Find(&users)
db.Where("name in (?)", []string{"embroker", "embroker 2"}).Find(&users)
// LIKE
db.Where("name LIKE ?", "%jin%").Find(&users)
// AND
db.Where("name = ? and age >= ?", "jinzhu", "22").Find(&users)
db.Where("name = ? and age >= ?", "embroker", "22").Find(&users)
// Time
db.Where("updated_at > ?", lastWeek).Find(&users)
@ -239,12 +239,12 @@ db.Where("created_at BETWEEN ? AND ?", lastWeek, today).Find(&users)
```go
// Struct
db.Where(&User{Name: "jinzhu", Age: 20}).First(&user)
//// SELECT * FROM users WHERE name = "jinzhu" AND age = 20 LIMIT 1;
db.Where(&User{Name: "embroker", Age: 20}).First(&user)
//// SELECT * FROM users WHERE name = "embroker" AND age = 20 LIMIT 1;
// Map
db.Where(map[string]interface{}{"name": "jinzhu", "age": 20}).Find(&users)
//// SELECT * FROM users WHERE name = "jinzhu" AND age = 20;
db.Where(map[string]interface{}{"name": "embroker", "age": 20}).Find(&users)
//// SELECT * FROM users WHERE name = "embroker" AND age = 20;
// Slice of primary keys
db.Where([]int64{20, 21, 22}).Find(&users)
@ -254,12 +254,12 @@ db.Where([]int64{20, 21, 22}).Find(&users)
### Query With Not
```go
db.Not("name", "jinzhu").First(&user)
//// SELECT * FROM users WHERE name <> "jinzhu" LIMIT 1;
db.Not("name", "embroker").First(&user)
//// SELECT * FROM users WHERE name <> "embroker" LIMIT 1;
// Not In
db.Not("name", []string{"jinzhu", "jinzhu 2"}).Find(&users)
//// SELECT * FROM users WHERE name NOT IN ("jinzhu", "jinzhu 2");
db.Not("name", []string{"embroker", "embroker 2"}).Find(&users)
//// SELECT * FROM users WHERE name NOT IN ("embroker", "embroker 2");
// Not In slice of primary keys
db.Not([]int64{1,2,3}).First(&user)
@ -269,12 +269,12 @@ db.Not([]int64{}).First(&user)
//// SELECT * FROM users;
// Plain SQL
db.Not("name = ?", "jinzhu").First(&user)
//// SELECT * FROM users WHERE NOT(name = "jinzhu");
db.Not("name = ?", "embroker").First(&user)
//// SELECT * FROM users WHERE NOT(name = "embroker");
// Struct
db.Not(User{Name: "jinzhu"}).First(&user)
//// SELECT * FROM users WHERE name <> "jinzhu";
db.Not(User{Name: "embroker"}).First(&user)
//// SELECT * FROM users WHERE name <> "embroker";
```
### Query With Inline Condition
@ -285,11 +285,11 @@ db.First(&user, 23)
//// SELECT * FROM users WHERE id = 23 LIMIT 1;
// Plain SQL
db.Find(&user, "name = ?", "jinzhu")
//// SELECT * FROM users WHERE name = "jinzhu";
db.Find(&user, "name = ?", "embroker")
//// SELECT * FROM users WHERE name = "embroker";
db.Find(&users, "name <> ? AND age > ?", "jinzhu", 20)
//// SELECT * FROM users WHERE name <> "jinzhu" AND age > 20;
db.Find(&users, "name <> ? AND age > ?", "embroker", 20)
//// SELECT * FROM users WHERE name <> "embroker" AND age > 20;
// Struct
db.Find(&users, User{Age: 20})
@ -307,11 +307,11 @@ db.Where("role = ?", "admin").Or("role = ?", "super_admin").Find(&users)
//// SELECT * FROM users WHERE role = 'admin' OR role = 'super_admin';
// Struct
db.Where("name = 'jinzhu'").Or(User{Name: "jinzhu 2"}).Find(&users)
//// SELECT * FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2';
db.Where("name = 'embroker'").Or(User{Name: "embroker 2"}).Find(&users)
//// SELECT * FROM users WHERE name = 'embroker' OR name = 'embroker 2';
// Map
db.Where("name = 'jinzhu'").Or(map[string]interface{}{"name": "jinzhu 2"}).Find(&users)
db.Where("name = 'embroker'").Or(map[string]interface{}{"name": "embroker 2"}).Find(&users)
```
### Query Chains
@ -319,10 +319,10 @@ db.Where("name = 'jinzhu'").Or(map[string]interface{}{"name": "jinzhu 2"}).Find(
Gorm has a chainable API, you could use it like this
```go
db.Where("name <> ?","jinzhu").Where("age >= ? and role <> ?",20,"admin").Find(&users)
//// SELECT * FROM users WHERE name <> 'jinzhu' AND age >= 20 AND role <> 'admin';
db.Where("name <> ?","embroker").Where("age >= ? and role <> ?",20,"admin").Find(&users)
//// SELECT * FROM users WHERE name <> 'embroker' AND age >= 20 AND role <> 'admin';
db.Where("role = ?", "admin").Or("role = ?", "super_admin").Not("name = ?", "jinzhu").Find(&users)
db.Where("role = ?", "admin").Or("role = ?", "super_admin").Not("name = ?", "embroker").Find(&users)
```
### Preloading (Eager loading)
@ -359,13 +359,13 @@ db.Preload("Orders", "state = ?", "paid").Preload("Orders.OrderItems").Find(&use
```go
// Update an existing struct
db.First(&user)
user.Name = "jinzhu 2"
user.Name = "embroker 2"
user.Age = 100
db.Save(&user)
//// UPDATE users SET name='jinzhu 2', age=100, updated_at = '2013-11-17 21:34:10' WHERE id=111;
//// UPDATE users SET name='embroker 2', age=100, updated_at = '2013-11-17 21:34:10' WHERE id=111;
db.Where("active = ?", true).Save(&user)
//// UPDATE users SET name='jinzhu 2', age=100, updated_at = '2013-11-17 21:34:10' WHERE id=111 AND active = true;
//// UPDATE users SET name='embroker 2', age=100, updated_at = '2013-11-17 21:34:10' WHERE id=111 AND active = true;
// Update an attribute if it is changed
db.Model(&user).Update("name", "hello")
@ -442,7 +442,7 @@ db.Delete(&email)
### Batch Delete
```go
db.Where("email LIKE ?", "%jinzhu%").Delete(Email{})
db.Where("email LIKE ?", "%embroker%").Delete(Email{})
//// DELETE from emails where email LIKE "%jinhu%";
```
@ -593,7 +593,7 @@ db.FirstOrInit(&user, User{Name: "non_existing"})
// Found
db.Where(User{Name: "Jinzhu"}).FirstOrInit(&user)
//// user -> User{Id: 111, Name: "Jinzhu", Age: 20}
db.FirstOrInit(&user, map[string]interface{}{"name": "jinzhu"})
db.FirstOrInit(&user, map[string]interface{}{"name": "embroker"})
//// user -> User{Id: 111, Name: "Jinzhu", Age: 20}
```
@ -613,7 +613,7 @@ db.Where(User{Name: "noexisting_user"}).Attrs("age", 20).FirstOrInit(&user)
// Found
db.Where(User{Name: "Jinzhu"}).Attrs(User{Age: 30}).FirstOrInit(&user)
//// SELECT * FROM USERS WHERE name = jinzhu';
//// SELECT * FROM USERS WHERE name = embroker';
//// user -> User{Id: 111, Name: "Jinzhu", Age: 20}
```
@ -628,7 +628,7 @@ db.Where(User{Name: "non_existing"}).Assign(User{Age: 20}).FirstOrInit(&user)
// Found
db.Where(User{Name: "Jinzhu"}).Assign(User{Age: 30}).FirstOrInit(&user)
//// SELECT * FROM USERS WHERE name = jinzhu';
//// SELECT * FROM USERS WHERE name = embroker';
//// user -> User{Id: 111, Name: "Jinzhu", Age: 30}
```
@ -659,9 +659,9 @@ db.Where(User{Name: "non_existing"}).Attrs(User{Age: 20}).FirstOrCreate(&user)
//// user -> User{Id: 112, Name: "non_existing", Age: 20}
// Found
db.Where(User{Name: "jinzhu"}).Attrs(User{Age: 30}).FirstOrCreate(&user)
//// SELECT * FROM users WHERE name = 'jinzhu';
//// user -> User{Id: 111, Name: "jinzhu", Age: 20}
db.Where(User{Name: "embroker"}).Attrs(User{Age: 30}).FirstOrCreate(&user)
//// SELECT * FROM users WHERE name = 'embroker';
//// user -> User{Id: 111, Name: "embroker", Age: 20}
```
### Assign
@ -676,10 +676,10 @@ db.Where(User{Name: "non_existing"}).Assign(User{Age: 20}).FirstOrCreate(&user)
//// user -> User{Id: 112, Name: "non_existing", Age: 20}
// Found
db.Where(User{Name: "jinzhu"}).Assign(User{Age: 30}).FirstOrCreate(&user)
//// SELECT * FROM users WHERE name = 'jinzhu';
db.Where(User{Name: "embroker"}).Assign(User{Age: 30}).FirstOrCreate(&user)
//// SELECT * FROM users WHERE name = 'embroker';
//// UPDATE users SET age=30 WHERE id = 111;
//// user -> User{Id: 111, Name: "jinzhu", Age: 30}
//// user -> User{Id: 111, Name: "embroker", Age: 30}
```
## Select
@ -738,12 +738,12 @@ db.Offset(10).Find(&users1).Offset(-1).Find(&users2)
## Count
```go
db.Where("name = ?", "jinzhu").Or("name = ?", "jinzhu 2").Find(&users).Count(&count)
//// SELECT * from USERS WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (users)
//// SELECT count(*) FROM users WHERE name = 'jinzhu' OR name = 'jinzhu 2'; (count)
db.Where("name = ?", "embroker").Or("name = ?", "embroker 2").Find(&users).Count(&count)
//// SELECT * from USERS WHERE name = 'embroker' OR name = 'embroker 2'; (users)
//// SELECT count(*) FROM users WHERE name = 'embroker' OR name = 'embroker 2'; (count)
db.Model(User{}).Where("name = ?", "jinzhu").Count(&count)
//// SELECT count(*) FROM users WHERE name = 'jinzhu'; (count)
db.Model(User{}).Where("name = ?", "embroker").Count(&count)
//// SELECT count(*) FROM users WHERE name = 'embroker'; (count)
db.Table("deleted_users").Count(&count)
//// SELECT count(*) FROM deleted_users;
@ -778,10 +778,10 @@ db.Exec("UPDATE orders SET shipped_at=? WHERE id IN (?)", time.Now, []int64{11,2
It is even possible to get query result as `*sql.Row` or `*sql.Rows`
```go
row := db.Table("users").Where("name = ?", "jinzhu").Select("name, age").Row() // (*sql.Row)
row := db.Table("users").Where("name = ?", "embroker").Select("name, age").Row() // (*sql.Row)
row.Scan(&name, &age)
rows, err := db.Model(User{}).Where("name = ?", "jinzhu").Select("name, age, email").Rows() // (*sql.Rows, error)
rows, err := db.Model(User{}).Where("name = ?", "embroker").Select("name, age, email").Rows() // (*sql.Rows, error)
defer rows.Close()
for rows.Next() {
...
@ -790,7 +790,7 @@ for rows.Next() {
}
// Raw SQL
rows, err := db.Raw("select name, age, email from users where name = ?", "jinzhu").Rows() // (*sql.Rows, error)
rows, err := db.Raw("select name, age, email from users where name = ?", "embroker").Rows() // (*sql.Rows, error)
defer rows.Close()
for rows.Next() {
...
@ -850,7 +850,7 @@ db.Table("users").Select("users.name, emails.email").Joins("left join emails on
db.Joins("inner join emails on emails.user_id = users.id").Where("emails.email = ?", "x@example.org").Find(&user)
// find all email addresses for a user
db.Joins("left join users on users.id = emails.user_id").Where("users.name = ?", "jinzhu").Find(&emails)
db.Joins("left join users on users.id = emails.user_id").Where("users.name = ?", "embroker").Find(&emails)
```
## Transactions
@ -986,8 +986,8 @@ var deleted_users []User
db.Table("deleted_users").Find(&deleted_users)
//// SELECT * FROM deleted_users;
db.Table("deleted_users").Where("name = ?", "jinzhu").Delete()
//// DELETE FROM deleted_users WHERE name = 'jinzhu';
db.Table("deleted_users").Where("name = ?", "embroker").Delete()
//// DELETE FROM deleted_users WHERE name = 'embroker';
```
### Specifying The Table Name For A Struct Permanently with TableName
@ -1012,12 +1012,12 @@ func (u User) TableName() string {
## Error Handling
```go
query := db.Where("name = ?", "jinzhu").First(&user)
query := db.Where("name = ?", "embroker").First(&user)
query := db.First(&user).Limit(10).Find(&users)
// query.Error will return the last happened error
// So you could do error handing in your application like this:
if err := db.Where("name = ?", "jinzhu").First(&user).Error; err != nil {
if err := db.Where("name = ?", "embroker").First(&user).Error; err != nil {
// error handling...
}
@ -1044,15 +1044,15 @@ db.LogMode(true)
db.LogMode(false)
// Debug a single operation
db.Debug().Where("name = ?", "jinzhu").First(&User{})
db.Debug().Where("name = ?", "embroker").First(&User{})
```
![logger](https://raw.github.com/jinzhu/gorm/master/images/logger.png)
![logger](https://raw.github.com/embroker/gorm/master/images/logger.png)
### Customize Logger
```go
// Refer gorm's default logger for how to: https://github.com/jinzhu/gorm/blob/master/logger.go#files
// Refer gorm's default logger for how to: https://github.com/embroker/gorm/blob/master/logger.go#files
db.SetLogger(gorm.Logger{revel.TRACE})
db.SetLogger(log.New(os.Stdout, "\r\n", 0))
```
@ -1182,14 +1182,11 @@ db.Where("email = ?", "x@example.org").Attrs(User{RegisteredIp: "111.111.111.111
# Author
**jinzhu**
**embroker**
* <http://github.com/jinzhu>
* <wosmvp@gmail.com>
* <http://twitter.com/zhangjinzhu>
## License
Released under the [MIT License](https://github.com/jinzhu/gorm/blob/master/License).
Released under the [MIT License](https://github.com/embroker/gorm/blob/master/License).
[![GoDoc](https://godoc.org/github.com/jinzhu/gorm?status.png)](http://godoc.org/github.com/jinzhu/gorm)
[![GoDoc](https://godoc.org/github.com/embroker/gorm?status.png)](http://godoc.org/github.com/embroker/gorm)

View File

@ -59,10 +59,10 @@ func TestHasOneAndHasManyAssociation(t *testing.T) {
func TestRelated(t *testing.T) {
user := User{
Name: "jinzhu",
Name: "embroker",
BillingAddress: Address{Address1: "Billing Address - Address 1"},
ShippingAddress: Address{Address1: "Shipping Address - Address 1"},
Emails: []Email{{Email: "jinzhu@example.com"}, {Email: "jinzhu-2@example@example.com"}},
Emails: []Email{{Email: "embroker@example.com"}, {Email: "embroker-2@example@example.com"}},
CreditCard: CreditCard{Number: "1234567890"},
Company: Company{Name: "company1"},
}
@ -88,7 +88,7 @@ func TestRelated(t *testing.T) {
}
var emails2 []Email
DB.Model(&user).Where("email = ?", "jinzhu@example.com").Related(&emails2)
DB.Model(&user).Where("email = ?", "embroker@example.com").Related(&emails2)
if len(emails2) != 1 {
t.Errorf("Should have two emails")
}

View File

@ -3,7 +3,7 @@ package gorm_test
import (
"errors"
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
"reflect"
"testing"

View File

@ -5,7 +5,7 @@ import (
"testing"
"time"
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
)
type Person struct {

View File

@ -9,7 +9,7 @@ import (
_ "github.com/denisenkom/go-mssqldb"
testdb "github.com/erikstmartin/go-testdb"
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
"github.com/jinzhu/now"
_ "github.com/lib/pq"
_ "github.com/mattn/go-sqlite3"
@ -94,7 +94,7 @@ func TestExceptionsWithInvalidSql(t *testing.T) {
t.Errorf("Should find some users")
}
if DB.Where("name = ?", "jinzhu; delete * from users").First(&User{}).Error == nil {
if DB.Where("name = ?", "embroker; delete * from users").First(&User{}).Error == nil {
t.Errorf("Should got error with invalid SQL")
}
@ -400,7 +400,7 @@ func TestRaw(t *testing.T) {
t.Errorf("Raw with Rows should find one record with name 3")
}
DB.Exec("update users set name=? where name in (?)", "jinzhu", []string{user1.Name, user2.Name, user3.Name})
DB.Exec("update users set name=? where name in (?)", "embroker", []string{user1.Name, user2.Name, user3.Name})
if DB.Where("name in (?)", []string{user1.Name, user2.Name, user3.Name}).First(&User{}).Error != gorm.RecordNotFound {
t.Error("Raw sql to update records")
}

View File

@ -104,7 +104,7 @@ func TestAutoMigration(t *testing.T) {
t.Errorf("Auto Migrate should not raise any error")
}
DB.Save(&BigEmail{Email: "jinzhu@example.org", UserAgent: "pc", RegisteredAt: time.Now()})
DB.Save(&BigEmail{Email: "embroker@example.org", UserAgent: "pc", RegisteredAt: time.Now()})
scope := DB.NewScope(&BigEmail{})
if !scope.Dialect().HasIndex(scope, scope.TableName(), "idx_email_agent") {
@ -117,7 +117,7 @@ func TestAutoMigration(t *testing.T) {
var bigemail BigEmail
DB.First(&bigemail, "user_agent = ?", "pc")
if bigemail.Email != "jinzhu@example.org" || bigemail.UserAgent != "pc" || bigemail.RegisteredAt.IsZero() {
if bigemail.Email != "embroker@example.org" || bigemail.UserAgent != "pc" || bigemail.RegisteredAt.IsZero() {
t.Error("Big Emails should be saved and fetched correctly")
}
}

View File

@ -4,7 +4,7 @@ import (
"fmt"
"reflect"
"github.com/jinzhu/now"
"github.com/embroker/now"
"testing"
"time"
@ -541,8 +541,8 @@ func TestFindOrCreate(t *testing.T) {
t.Errorf("user should be found and updated with assigned attrs")
}
DB.Where(&User{Name: "find or create embedded struct"}).Assign(User{Age: 44, CreditCard: CreditCard{Number: "1231231231"}, Emails: []Email{{Email: "jinzhu@assign_embedded_struct.com"}, {Email: "jinzhu-2@assign_embedded_struct.com"}}}).FirstOrCreate(&user8)
if DB.Where("email = ?", "jinzhu-2@assign_embedded_struct.com").First(&Email{}).RecordNotFound() {
DB.Where(&User{Name: "find or create embedded struct"}).Assign(User{Age: 44, CreditCard: CreditCard{Number: "1231231231"}, Emails: []Email{{Email: "embroker@assign_embedded_struct.com"}, {Email: "embroker-2@assign_embedded_struct.com"}}}).FirstOrCreate(&user8)
if DB.Where("email = ?", "embroker-2@assign_embedded_struct.com").First(&Email{}).RecordNotFound() {
t.Errorf("embedded struct email should be saved")
}
@ -566,7 +566,7 @@ func TestSelectWithEscapedFieldName(t *testing.T) {
}
func TestSelectWithVariables(t *testing.T) {
DB.Save(&User{Name: "jinzhu"})
DB.Save(&User{Name: "embroker"})
rows, _ := DB.Table("users").Select("? as fake", "name").Rows()
@ -581,12 +581,12 @@ func TestSelectWithVariables(t *testing.T) {
}
func TestSelectWithArrayInput(t *testing.T) {
DB.Save(&User{Name: "jinzhu", Age: 42})
DB.Save(&User{Name: "embroker", Age: 42})
var user User
DB.Select([]string{"name", "age"}).Where("age = 42 AND name = 'jinzhu'").First(&user)
DB.Select([]string{"name", "age"}).Where("age = 42 AND name = 'embroker'").First(&user)
if user.Name != "jinzhu" || user.Age != 42 {
if user.Name != "embroker" || user.Age != 42 {
t.Errorf("Should have selected both age and name")
}
}

View File

@ -1,7 +1,7 @@
package gorm_test
import (
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
"testing"
)

View File

@ -7,7 +7,7 @@ import (
func TestCloneSearch(t *testing.T) {
s := new(search)
s.Where("name = ?", "jinzhu").Order("name").Attrs("name", "jinzhu").Select("name, age")
s.Where("name = ?", "embroker").Order("name").Attrs("name", "embroker").Select("name, age")
s1 := s.clone()
s1.Where("age = ?", 20).Order("age").Attrs("email", "a@e.org").Select("email")

View File

@ -4,7 +4,7 @@ import (
"testing"
"time"
"github.com/jinzhu/gorm"
"github.com/embroker/gorm"
)
func TestUpdate(t *testing.T) {

View File

@ -10,7 +10,7 @@ import (
func fileWithLineNum() string {
for i := 2; i < 15; i++ {
_, file, line, ok := runtime.Caller(i)
if ok && (!regexp.MustCompile(`jinzhu/gorm/.*.go`).MatchString(file) || regexp.MustCompile(`jinzhu/gorm/.*test.go`).MatchString(file)) {
if ok && (!regexp.MustCompile(`embroker/gorm/.*.go`).MatchString(file) || regexp.MustCompile(`embroker/gorm/.*test.go`).MatchString(file)) {
return fmt.Sprintf("%v:%v", file, line)
}
}