-
Notifications
You must be signed in to change notification settings - Fork 4
/
repository_table_listener_example_test.go
55 lines (48 loc) · 1.33 KB
/
repository_table_listener_example_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package pg
import (
"context"
"fmt"
"time"
)
func ExampleRepository_ListenTable() {
db, err := openTestConnection(true)
if err != nil {
handleExampleError(err)
return
}
defer db.Close()
customers := NewRepository[Customer](db)
closer, err := customers.ListenTable(context.Background(), func(evt TableNotification[Customer], err error) error {
if err != nil {
fmt.Printf("received error: %v\n", err)
return err
}
fmt.Printf("table: %s, event: %s, old name: %s new name: %s\n", evt.Table, evt.Change, evt.Old.Name, evt.New.Name)
return nil
})
if err != nil {
fmt.Println(err)
return
}
defer closer.Close(context.Background())
newCustomer := Customer{
CognitoUserID: "766064d4-a2a7-442d-aa75-33493bb4dbb9",
Email: "kataras2024@hotmail.com",
Name: "Makis",
}
err = customers.InsertSingle(context.Background(), newCustomer, &newCustomer.ID)
if err != nil {
fmt.Println(err)
return
}
newCustomer.Name = "Makis_UPDATED"
_, err = customers.UpdateOnlyColumns(context.Background(), []string{"name"}, newCustomer)
if err != nil {
fmt.Println(err)
return
}
time.Sleep(8 * time.Second) // give it sometime to receive the notifications.
// Output:
// table: customers, event: INSERT, old name: new name: Makis
// table: customers, event: UPDATE, old name: Makis new name: Makis_UPDATED
}