entc/gen: move set-neighbors logic from codegen to sqlgraph

Summary: Pull Request resolved: https://github.com/facebookincubator/ent/pull/183

Reviewed By: alexsn

Differential Revision: D18644179

fbshipit-source-id: 2f2b0c03811a09c4c11240e5161187afbb2ac553
This commit is contained in:
Ariel Mashraki
2019-11-24 02:43:21 -08:00
committed by Facebook Github Bot
parent 1e49561634
commit c355ed49be
34 changed files with 659 additions and 659 deletions

View File

@@ -57,15 +57,17 @@ func (cq *CityQuery) Order(o ...Order) *CityQuery {
// QueryStreets chains the current query on the streets edge.
func (cq *CityQuery) QueryStreets() *StreetQuery {
query := &StreetQuery{config: cq.config}
builder := sql.Dialect(cq.driver.Dialect())
t1 := builder.Table(street.Table)
t2 := cq.sqlQuery()
t2.Select(t2.C(city.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(city.StreetsColumn), t2.C(city.FieldID))
step := &sql.Step{}
step.From.V = cq.sqlQuery()
step.From.Table = city.Table
step.From.Column = city.FieldID
step.To.Table = street.Table
step.To.Column = street.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = false
step.Edge.Table = city.StreetsTable
step.Edge.Columns = append(step.Edge.Columns, city.StreetsColumn)
query.sql = sql.SetNeighbors(cq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (sq *StreetQuery) Order(o ...Order) *StreetQuery {
// QueryCity chains the current query on the city edge.
func (sq *StreetQuery) QueryCity() *CityQuery {
query := &CityQuery{config: sq.config}
builder := sql.Dialect(sq.driver.Dialect())
t1 := builder.Table(city.Table)
t2 := sq.sqlQuery()
t2.Select(t2.C(street.CityColumn))
query.sql = builder.Select(t1.Columns(city.Columns...)...).
From(t1).
Join(t2).
On(t1.C(city.FieldID), t2.C(street.CityColumn))
step := &sql.Step{}
step.From.V = sq.sqlQuery()
step.From.Table = street.Table
step.From.Column = street.FieldID
step.To.Table = city.Table
step.To.Column = city.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = true
step.Edge.Table = street.CityTable
step.Edge.Columns = append(step.Edge.Columns, street.CityColumn)
query.sql = sql.SetNeighbors(sq.driver.Dialect(), step)
return query
}

View File

@@ -57,20 +57,17 @@ func (gq *GroupQuery) Order(o ...Order) *GroupQuery {
// QueryUsers chains the current query on the users edge.
func (gq *GroupQuery) QueryUsers() *UserQuery {
query := &UserQuery{config: gq.config}
builder := sql.Dialect(gq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := gq.sqlQuery()
t2.Select(t2.C(group.FieldID))
t3 := builder.Table(group.UsersTable)
t4 := builder.Select(t3.C(group.UsersPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(group.UsersPrimaryKey[0]), t2.C(group.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(group.UsersPrimaryKey[1]))
step := &sql.Step{}
step.From.V = gq.sqlQuery()
step.From.Table = group.Table
step.From.Column = group.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = group.UsersTable
step.Edge.Columns = append(step.Edge.Columns, group.UsersPrimaryKey...)
query.sql = sql.SetNeighbors(gq.driver.Dialect(), step)
return query
}

View File

@@ -57,20 +57,17 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryGroups chains the current query on the groups edge.
func (uq *UserQuery) QueryGroups() *GroupQuery {
query := &GroupQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(group.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.GroupsTable)
t4 := builder.Select(t3.C(user.GroupsPrimaryKey[0])).
From(t3).
Join(t2).
On(t3.C(user.GroupsPrimaryKey[1]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(group.FieldID), t4.C(user.GroupsPrimaryKey[0]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = group.Table
step.To.Column = group.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = true
step.Edge.Table = user.GroupsTable
step.Edge.Columns = append(step.Edge.Columns, user.GroupsPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -56,20 +56,17 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryFriends chains the current query on the friends edge.
func (uq *UserQuery) QueryFriends() *UserQuery {
query := &UserQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.FriendsTable)
t4 := builder.Select(t3.C(user.FriendsPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(user.FriendsPrimaryKey[0]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(user.FriendsPrimaryKey[1]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = user.FriendsTable
step.Edge.Columns = append(step.Edge.Columns, user.FriendsPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -56,40 +56,34 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryFollowers chains the current query on the followers edge.
func (uq *UserQuery) QueryFollowers() *UserQuery {
query := &UserQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.FollowersTable)
t4 := builder.Select(t3.C(user.FollowersPrimaryKey[0])).
From(t3).
Join(t2).
On(t3.C(user.FollowersPrimaryKey[1]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(user.FollowersPrimaryKey[0]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = true
step.Edge.Table = user.FollowersTable
step.Edge.Columns = append(step.Edge.Columns, user.FollowersPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}
// QueryFollowing chains the current query on the following edge.
func (uq *UserQuery) QueryFollowing() *UserQuery {
query := &UserQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.FollowingTable)
t4 := builder.Select(t3.C(user.FollowingPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(user.FollowingPrimaryKey[0]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(user.FollowingPrimaryKey[1]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = user.FollowingTable
step.Edge.Columns = append(step.Edge.Columns, user.FollowingPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (pq *PetQuery) Order(o ...Order) *PetQuery {
// QueryOwner chains the current query on the owner edge.
func (pq *PetQuery) QueryOwner() *UserQuery {
query := &UserQuery{config: pq.config}
builder := sql.Dialect(pq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := pq.sqlQuery()
t2.Select(t2.C(pet.OwnerColumn))
query.sql = builder.Select(t1.Columns(user.Columns...)...).
From(t1).
Join(t2).
On(t1.C(user.FieldID), t2.C(pet.OwnerColumn))
step := &sql.Step{}
step.From.V = pq.sqlQuery()
step.From.Table = pet.Table
step.From.Column = pet.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = true
step.Edge.Table = pet.OwnerTable
step.Edge.Columns = append(step.Edge.Columns, pet.OwnerColumn)
query.sql = sql.SetNeighbors(pq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryPets chains the current query on the pets edge.
func (uq *UserQuery) QueryPets() *PetQuery {
query := &PetQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(pet.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.PetsColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = pet.Table
step.To.Column = pet.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = false
step.Edge.Table = user.PetsTable
step.Edge.Columns = append(step.Edge.Columns, user.PetsColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -56,30 +56,34 @@ func (nq *NodeQuery) Order(o ...Order) *NodeQuery {
// QueryParent chains the current query on the parent edge.
func (nq *NodeQuery) QueryParent() *NodeQuery {
query := &NodeQuery{config: nq.config}
builder := sql.Dialect(nq.driver.Dialect())
t1 := builder.Table(node.Table)
t2 := nq.sqlQuery()
t2.Select(t2.C(node.ParentColumn))
query.sql = builder.Select(t1.Columns(node.Columns...)...).
From(t1).
Join(t2).
On(t1.C(node.FieldID), t2.C(node.ParentColumn))
step := &sql.Step{}
step.From.V = nq.sqlQuery()
step.From.Table = node.Table
step.From.Column = node.FieldID
step.To.Table = node.Table
step.To.Column = node.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = true
step.Edge.Table = node.ParentTable
step.Edge.Columns = append(step.Edge.Columns, node.ParentColumn)
query.sql = sql.SetNeighbors(nq.driver.Dialect(), step)
return query
}
// QueryChildren chains the current query on the children edge.
func (nq *NodeQuery) QueryChildren() *NodeQuery {
query := &NodeQuery{config: nq.config}
builder := sql.Dialect(nq.driver.Dialect())
t1 := builder.Table(node.Table)
t2 := nq.sqlQuery()
t2.Select(t2.C(node.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(node.ChildrenColumn), t2.C(node.FieldID))
step := &sql.Step{}
step.From.V = nq.sqlQuery()
step.From.Table = node.Table
step.From.Column = node.FieldID
step.To.Table = node.Table
step.To.Column = node.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = false
step.Edge.Table = node.ChildrenTable
step.Edge.Columns = append(step.Edge.Columns, node.ChildrenColumn)
query.sql = sql.SetNeighbors(nq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (cq *CardQuery) Order(o ...Order) *CardQuery {
// QueryOwner chains the current query on the owner edge.
func (cq *CardQuery) QueryOwner() *UserQuery {
query := &UserQuery{config: cq.config}
builder := sql.Dialect(cq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := cq.sqlQuery()
t2.Select(t2.C(card.OwnerColumn))
query.sql = builder.Select(t1.Columns(user.Columns...)...).
From(t1).
Join(t2).
On(t1.C(user.FieldID), t2.C(card.OwnerColumn))
step := &sql.Step{}
step.From.V = cq.sqlQuery()
step.From.Table = card.Table
step.From.Column = card.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.O2O
step.Edge.Inverse = true
step.Edge.Table = card.OwnerTable
step.Edge.Columns = append(step.Edge.Columns, card.OwnerColumn)
query.sql = sql.SetNeighbors(cq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryCard chains the current query on the card edge.
func (uq *UserQuery) QueryCard() *CardQuery {
query := &CardQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(card.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.CardColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = card.Table
step.To.Column = card.FieldID
step.Edge.Rel = sql.O2O
step.Edge.Inverse = false
step.Edge.Table = user.CardTable
step.Edge.Columns = append(step.Edge.Columns, user.CardColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -56,15 +56,17 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QuerySpouse chains the current query on the spouse edge.
func (uq *UserQuery) QuerySpouse() *UserQuery {
query := &UserQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.SpouseColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.O2O
step.Edge.Inverse = false
step.Edge.Table = user.SpouseTable
step.Edge.Columns = append(step.Edge.Columns, user.SpouseColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -56,30 +56,34 @@ func (nq *NodeQuery) Order(o ...Order) *NodeQuery {
// QueryPrev chains the current query on the prev edge.
func (nq *NodeQuery) QueryPrev() *NodeQuery {
query := &NodeQuery{config: nq.config}
builder := sql.Dialect(nq.driver.Dialect())
t1 := builder.Table(node.Table)
t2 := nq.sqlQuery()
t2.Select(t2.C(node.PrevColumn))
query.sql = builder.Select(t1.Columns(node.Columns...)...).
From(t1).
Join(t2).
On(t1.C(node.FieldID), t2.C(node.PrevColumn))
step := &sql.Step{}
step.From.V = nq.sqlQuery()
step.From.Table = node.Table
step.From.Column = node.FieldID
step.To.Table = node.Table
step.To.Column = node.FieldID
step.Edge.Rel = sql.O2O
step.Edge.Inverse = true
step.Edge.Table = node.PrevTable
step.Edge.Columns = append(step.Edge.Columns, node.PrevColumn)
query.sql = sql.SetNeighbors(nq.driver.Dialect(), step)
return query
}
// QueryNext chains the current query on the next edge.
func (nq *NodeQuery) QueryNext() *NodeQuery {
query := &NodeQuery{config: nq.config}
builder := sql.Dialect(nq.driver.Dialect())
t1 := builder.Table(node.Table)
t2 := nq.sqlQuery()
t2.Select(t2.C(node.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(node.NextColumn), t2.C(node.FieldID))
step := &sql.Step{}
step.From.V = nq.sqlQuery()
step.From.Table = node.Table
step.From.Column = node.FieldID
step.To.Table = node.Table
step.To.Column = node.FieldID
step.Edge.Rel = sql.O2O
step.Edge.Inverse = false
step.Edge.Table = node.NextTable
step.Edge.Columns = append(step.Edge.Columns, node.NextColumn)
query.sql = sql.SetNeighbors(nq.driver.Dialect(), step)
return query
}

View File

@@ -57,15 +57,17 @@ func (cq *CarQuery) Order(o ...Order) *CarQuery {
// QueryOwner chains the current query on the owner edge.
func (cq *CarQuery) QueryOwner() *UserQuery {
query := &UserQuery{config: cq.config}
builder := sql.Dialect(cq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := cq.sqlQuery()
t2.Select(t2.C(car.OwnerColumn))
query.sql = builder.Select(t1.Columns(user.Columns...)...).
From(t1).
Join(t2).
On(t1.C(user.FieldID), t2.C(car.OwnerColumn))
step := &sql.Step{}
step.From.V = cq.sqlQuery()
step.From.Table = car.Table
step.From.Column = car.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = true
step.Edge.Table = car.OwnerTable
step.Edge.Columns = append(step.Edge.Columns, car.OwnerColumn)
query.sql = sql.SetNeighbors(cq.driver.Dialect(), step)
return query
}

View File

@@ -57,20 +57,17 @@ func (gq *GroupQuery) Order(o ...Order) *GroupQuery {
// QueryUsers chains the current query on the users edge.
func (gq *GroupQuery) QueryUsers() *UserQuery {
query := &UserQuery{config: gq.config}
builder := sql.Dialect(gq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := gq.sqlQuery()
t2.Select(t2.C(group.FieldID))
t3 := builder.Table(group.UsersTable)
t4 := builder.Select(t3.C(group.UsersPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(group.UsersPrimaryKey[0]), t2.C(group.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(group.UsersPrimaryKey[1]))
step := &sql.Step{}
step.From.V = gq.sqlQuery()
step.From.Table = group.Table
step.From.Column = group.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = group.UsersTable
step.Edge.Columns = append(step.Edge.Columns, group.UsersPrimaryKey...)
query.sql = sql.SetNeighbors(gq.driver.Dialect(), step)
return query
}

View File

@@ -58,35 +58,34 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryCars chains the current query on the cars edge.
func (uq *UserQuery) QueryCars() *CarQuery {
query := &CarQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(car.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.CarsColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = car.Table
step.To.Column = car.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = false
step.Edge.Table = user.CarsTable
step.Edge.Columns = append(step.Edge.Columns, user.CarsColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}
// QueryGroups chains the current query on the groups edge.
func (uq *UserQuery) QueryGroups() *GroupQuery {
query := &GroupQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(group.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.GroupsTable)
t4 := builder.Select(t3.C(user.GroupsPrimaryKey[0])).
From(t3).
Join(t2).
On(t3.C(user.GroupsPrimaryKey[1]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(group.FieldID), t4.C(user.GroupsPrimaryKey[0]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = group.Table
step.To.Column = group.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = true
step.Edge.Table = user.GroupsTable
step.Edge.Columns = append(step.Edge.Columns, user.GroupsPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}

View File

@@ -57,35 +57,34 @@ func (gq *GroupQuery) Order(o ...Order) *GroupQuery {
// QueryUsers chains the current query on the users edge.
func (gq *GroupQuery) QueryUsers() *UserQuery {
query := &UserQuery{config: gq.config}
builder := sql.Dialect(gq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := gq.sqlQuery()
t2.Select(t2.C(group.FieldID))
t3 := builder.Table(group.UsersTable)
t4 := builder.Select(t3.C(group.UsersPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(group.UsersPrimaryKey[0]), t2.C(group.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(group.UsersPrimaryKey[1]))
step := &sql.Step{}
step.From.V = gq.sqlQuery()
step.From.Table = group.Table
step.From.Column = group.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = group.UsersTable
step.Edge.Columns = append(step.Edge.Columns, group.UsersPrimaryKey...)
query.sql = sql.SetNeighbors(gq.driver.Dialect(), step)
return query
}
// QueryAdmin chains the current query on the admin edge.
func (gq *GroupQuery) QueryAdmin() *UserQuery {
query := &UserQuery{config: gq.config}
builder := sql.Dialect(gq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := gq.sqlQuery()
t2.Select(t2.C(group.AdminColumn))
query.sql = builder.Select(t1.Columns(user.Columns...)...).
From(t1).
Join(t2).
On(t1.C(user.FieldID), t2.C(group.AdminColumn))
step := &sql.Step{}
step.From.V = gq.sqlQuery()
step.From.Table = group.Table
step.From.Column = group.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = false
step.Edge.Table = group.AdminTable
step.Edge.Columns = append(step.Edge.Columns, group.AdminColumn)
query.sql = sql.SetNeighbors(gq.driver.Dialect(), step)
return query
}

View File

@@ -57,35 +57,34 @@ func (pq *PetQuery) Order(o ...Order) *PetQuery {
// QueryFriends chains the current query on the friends edge.
func (pq *PetQuery) QueryFriends() *PetQuery {
query := &PetQuery{config: pq.config}
builder := sql.Dialect(pq.driver.Dialect())
t1 := builder.Table(pet.Table)
t2 := pq.sqlQuery()
t2.Select(t2.C(pet.FieldID))
t3 := builder.Table(pet.FriendsTable)
t4 := builder.Select(t3.C(pet.FriendsPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(pet.FriendsPrimaryKey[0]), t2.C(pet.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(pet.FieldID), t4.C(pet.FriendsPrimaryKey[1]))
step := &sql.Step{}
step.From.V = pq.sqlQuery()
step.From.Table = pet.Table
step.From.Column = pet.FieldID
step.To.Table = pet.Table
step.To.Column = pet.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = pet.FriendsTable
step.Edge.Columns = append(step.Edge.Columns, pet.FriendsPrimaryKey...)
query.sql = sql.SetNeighbors(pq.driver.Dialect(), step)
return query
}
// QueryOwner chains the current query on the owner edge.
func (pq *PetQuery) QueryOwner() *UserQuery {
query := &UserQuery{config: pq.config}
builder := sql.Dialect(pq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := pq.sqlQuery()
t2.Select(t2.C(pet.OwnerColumn))
query.sql = builder.Select(t1.Columns(user.Columns...)...).
From(t1).
Join(t2).
On(t1.C(user.FieldID), t2.C(pet.OwnerColumn))
step := &sql.Step{}
step.From.V = pq.sqlQuery()
step.From.Table = pet.Table
step.From.Column = pet.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2O
step.Edge.Inverse = true
step.Edge.Table = pet.OwnerTable
step.Edge.Columns = append(step.Edge.Columns, pet.OwnerColumn)
query.sql = sql.SetNeighbors(pq.driver.Dialect(), step)
return query
}

View File

@@ -58,70 +58,68 @@ func (uq *UserQuery) Order(o ...Order) *UserQuery {
// QueryPets chains the current query on the pets edge.
func (uq *UserQuery) QueryPets() *PetQuery {
query := &PetQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(pet.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.PetsColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = pet.Table
step.To.Column = pet.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = false
step.Edge.Table = user.PetsTable
step.Edge.Columns = append(step.Edge.Columns, user.PetsColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}
// QueryFriends chains the current query on the friends edge.
func (uq *UserQuery) QueryFriends() *UserQuery {
query := &UserQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(user.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.FriendsTable)
t4 := builder.Select(t3.C(user.FriendsPrimaryKey[1])).
From(t3).
Join(t2).
On(t3.C(user.FriendsPrimaryKey[0]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(user.FieldID), t4.C(user.FriendsPrimaryKey[1]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = user.Table
step.To.Column = user.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = false
step.Edge.Table = user.FriendsTable
step.Edge.Columns = append(step.Edge.Columns, user.FriendsPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}
// QueryGroups chains the current query on the groups edge.
func (uq *UserQuery) QueryGroups() *GroupQuery {
query := &GroupQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(group.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
t3 := builder.Table(user.GroupsTable)
t4 := builder.Select(t3.C(user.GroupsPrimaryKey[0])).
From(t3).
Join(t2).
On(t3.C(user.GroupsPrimaryKey[1]), t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t4).
On(t1.C(group.FieldID), t4.C(user.GroupsPrimaryKey[0]))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = group.Table
step.To.Column = group.FieldID
step.Edge.Rel = sql.M2M
step.Edge.Inverse = true
step.Edge.Table = user.GroupsTable
step.Edge.Columns = append(step.Edge.Columns, user.GroupsPrimaryKey...)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}
// QueryManage chains the current query on the manage edge.
func (uq *UserQuery) QueryManage() *GroupQuery {
query := &GroupQuery{config: uq.config}
builder := sql.Dialect(uq.driver.Dialect())
t1 := builder.Table(group.Table)
t2 := uq.sqlQuery()
t2.Select(t2.C(user.FieldID))
query.sql = builder.Select().
From(t1).
Join(t2).
On(t1.C(user.ManageColumn), t2.C(user.FieldID))
step := &sql.Step{}
step.From.V = uq.sqlQuery()
step.From.Table = user.Table
step.From.Column = user.FieldID
step.To.Table = group.Table
step.To.Column = group.FieldID
step.Edge.Rel = sql.O2M
step.Edge.Inverse = true
step.Edge.Table = user.ManageTable
step.Edge.Columns = append(step.Edge.Columns, user.ManageColumn)
query.sql = sql.SetNeighbors(uq.driver.Dialect(), step)
return query
}