mirror of
https://github.com/ent/ent.git
synced 2026-05-22 09:31:45 +03:00
Summary: Used addlicense to generate this: addlicense -c "Facebook Inc" -f license_header . example was taken from: https://github.com/facebook/litho/blob/master/lib/soloader/BUCK Reviewed By: alexsn Differential Revision: D17070152 fbshipit-source-id: e7b91398d7f6181727be3400c1872ad5f28e38ed
72 lines
1.7 KiB
Go
72 lines
1.7 KiB
Go
// Copyright 2019-present Facebook Inc. All rights reserved.
|
|
// This source code is licensed under the Apache 2.0 license found
|
|
// in the LICENSE file in the root directory of this source tree.
|
|
|
|
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/facebookincubator/ent/examples/o2o2types/ent"
|
|
|
|
"github.com/facebookincubator/ent/dialect/sql"
|
|
_ "github.com/mattn/go-sqlite3"
|
|
)
|
|
|
|
func main() {
|
|
db, err := sql.Open("sqlite3", "file:o2o2types?mode=memory&cache=shared&_fk=1")
|
|
if err != nil {
|
|
log.Fatalf("failed opening connection to sqlite: %v", err)
|
|
}
|
|
defer db.Close()
|
|
client := ent.NewClient(ent.Driver(db))
|
|
ctx := context.Background()
|
|
// run the auto migration tool.
|
|
if err := client.Schema.Create(ctx); err != nil {
|
|
log.Fatalf("failed creating schema resources: %v", err)
|
|
}
|
|
if err := Do(ctx, client); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
}
|
|
|
|
func Do(ctx context.Context, client *ent.Client) error {
|
|
a8m, err := client.User.
|
|
Create().
|
|
SetAge(30).
|
|
SetName("Mashraki").
|
|
Save(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("creating user: %v", err)
|
|
}
|
|
log.Println("user:", a8m)
|
|
card1, err := client.Card.
|
|
Create().
|
|
SetOwner(a8m).
|
|
SetNumber("1020").
|
|
SetExpired(time.Now().Add(time.Minute)).
|
|
Save(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("creating card: %v", err)
|
|
}
|
|
log.Println("card:", card1)
|
|
// Only returns the card of the user,
|
|
// and expects that there's only one.
|
|
card2, err := a8m.QueryCard().Only(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("querying card: %v", err)
|
|
}
|
|
log.Println("card:", card2)
|
|
// The Card entity is able to query its owner using
|
|
// its back-reference.
|
|
owner, err := card2.QueryOwner().Only(ctx)
|
|
if err != nil {
|
|
return fmt.Errorf("querying owner: %v", err)
|
|
}
|
|
log.Println("owner:", owner)
|
|
return nil
|
|
}
|