mirror of
https://github.com/ent/ent.git
synced 2026-05-24 09:31:56 +03:00
Summary: {F205899335}
Reviewed By: dlvhdr
Differential Revision: D17149531
fbshipit-source-id: cb8595d41ede6f813370564ca688f33d0dfe6905
1.5 KiB
Executable File
1.5 KiB
Executable File
id, title
| id | title |
|---|---|
| schema-def | Introduction |
Quick Summary
Schema describes the definition of one entity type in the graph, like User or Group,
and can contains the following configuration:
- Entity fields (or properties), like: name or age of a
User. - Entity edges (or relations), like:
User's groups, orUser's friends. - Database specific options, like: indexes or unique indexes.
Here's an example of a schema:
package schema
import (
"github.com/facebookincubator/ent"
"github.com/facebookincubator/ent/schema/field"
"github.com/facebookincubator/ent/schema/edge"
"github.com/facebookincubator/ent/schema/index"
)
type User struct {
ent.Schema
}
func (User) Fields() []ent.Field {
return []ent.Field{
field.Int("age"),
field.String("name"),
field.String("nickname").
Unique(),
}
}
func (User) Edges() []ent.Edge {
return []ent.Edge{
edge.To("groups", Group.Type),
edge.To("friends", User.Type),
}
}
func (User) Index() []ent.Index {
return []ent.Index{
index.Fields("age", "name").
Unique(),
}
}
Entity schemas are usually stored inside ent/schema directory under
the root directory of your project, and can be generated by entc as follows:
$ entc init User Group
It's Just Another ORM
If you are used to the definition of relations over edges, that's fine.
The modeling is the same. You can model with ent whatever you can model
with other traditional ORMs.
There are many examples in this website that will help you to get started,
and can be found in the edges section.