Getting Started
Getting Started
Section titled “Getting Started”1. Connect to Database
Section titled “1. Connect to Database”package main
import ( "context" "log"
"github.com/5xxxx/pie")
func main() { // Create engine engine, err := pie.NewEngine( context.Background(), "mydb", pie.WithURI("mongodb://localhost:27017"), pie.WithMapper(&pie.SnakeMapper{}), ) if err != nil { log.Fatal("Failed to create engine:", err) } defer engine.Disconnect(context.Background())
// Use engine...}2. Define Models
Section titled “2. Define Models”type User struct { ID bson.ObjectID `bson:"_id,omitempty"` Name string `bson:"name"` Email string `bson:"email"` Age int `bson:"age"` CreatedAt time.Time `bson:"created_at"` UpdatedAt time.Time `bson:"updated_at"`}
// Hook methodsfunc (u *User) BeforeCreate(ctx context.Context) error { u.CreatedAt = time.Now() u.UpdatedAt = time.Now() return nil}
func (u *User) AfterCreate(ctx context.Context) error { log.Printf("User %s created", u.Name) return nil}3. Basic Operations
Section titled “3. Basic Operations”// Create type-safe sessionsession := pie.Table[User](engine)
// Insert documentuser := &User{ Name: "John Doe", Email: "john@example.com", Age: 25,}result, err := session.Insert(context.Background(), user)
// Query documentsusers, err := session. Where("age", pie.Gte("age", 18)). OrderBy("name"). Limit(10). Find(context.Background())
// Update documentupdateResult, err := session. Where("email", "john@example.com"). Update(context.Background(), bson.D{{"$set", bson.D{{"age", 26}}}})
// Delete documentdeleteResult, err := session. Where("email", "john@example.com"). Delete(context.Background())Next Steps
Section titled “Next Steps”- Generics Guide - Learn about generics usage and benefits
- Query Builder - Learn about query methods
- Struct Query - Convert HTTP params to queries
- Pagination - Implement pagination
- Transactions - Use transactions