/
main.go
81 lines (69 loc) · 2.59 KB
/
main.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package main
import (
"github.com/ahmetson/service-lib/communication/command"
"github.com/ahmetson/service-lib/configuration"
"github.com/ahmetson/service-lib/extension"
databaseExtension "github.com/ahmetson/service-lib/extension/database"
"github.com/ahmetson/service-lib/log"
"github.com/web3-storage/go-w3s-client"
)
func main() {
logger, err := log.New("main", true)
if err != nil {
log.Fatal("log.New(`main`)", "error", err)
}
appConfig, err := configuration.New(logger)
if err != nil {
logger.Fatal("configuration.NewAppConfig", "error", err)
}
// W3Extension specific requirements check
apiToken := appConfig.GetString("W3_STORAGE_API_TOKEN")
if len(apiToken) == 0 {
logger.Fatal("missing web3.storage credentials 'W3_STORAGE_API_TOKEN' in env")
}
////////////////////////////////////////////////////////////////////////
//
// Establish a connection
//
w3client, err = w3s.NewClient(w3s.WithToken(apiToken))
if err != nil {
logger.Fatal("failed to create web4.storage client", "error", err)
}
/////////////////////////////////////////////////////////////////////////
//
// Create the extension
//
service, err := extension.New(appConfig, logger)
if err != nil {
logger.Fatal("extension.New", "error", err)
}
service.AddController(configuration.ReplierType)
const webProxyUrl = "github.com/ahmetson/web-proxy"
const organizationProxyUrl = "github.com/ahmetson/organization-proxy"
// web proxy is set for the testing purpose to access from web
service.RequireProxy(webProxyUrl, configuration.DefaultContext)
// organization proxy is set to connect from other services
service.RequireProxy(organizationProxyUrl, configuration.DevContext)
service.Pipe(webProxyUrl, service.GetControllerName())
service.Pipe(organizationProxyUrl, service.GetControllerName())
///////////////////////////////////////////////////////////////////////
//
// Set the routes
//
dbController := service.GetController()
dbController.AddRoute(command.NewRoute(databaseExtension.Exist, onExist))
dbController.AddRoute(command.NewRoute(databaseExtension.SelectRow, onSelectRow))
dbController.AddRoute(command.NewRoute(databaseExtension.SelectAll, onSelectAll))
dbController.AddRoute(command.NewRoute(databaseExtension.Delete, onDelete))
dbController.AddRoute(command.NewRoute(databaseExtension.Insert, onInsert))
dbController.AddRoute(command.NewRoute(databaseExtension.Update, onUpdate))
///////////////////////////////////////////////////////////////////////
//
// Done, let's run it
//
err = service.Prepare()
if err != nil {
logger.Fatal("service.Prepare", "error", err)
}
service.Run()
}