init
This commit is contained in:
commit
8f4f858d86
30 changed files with 9765 additions and 0 deletions
76
examples/http_server.gt
Normal file
76
examples/http_server.gt
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
package examples.http
|
||||
|
||||
import context
|
||||
import fmt
|
||||
import github.com.uptrace.bun
|
||||
import github.com.uptrace.bun.dialect.pgdialect
|
||||
import github.com.uptrace.bun.driver.pgdriver
|
||||
import database.sql
|
||||
import net.http
|
||||
import os
|
||||
|
||||
class BunUser(val Name: String)
|
||||
|
||||
class EpicControllerImpl(val db: *bun.DB) {
|
||||
|
||||
fun hello(w: http.ResponseWriter, r: *http.Request) {
|
||||
fmt.Fprintln(w, "hello from gotlin")
|
||||
}
|
||||
|
||||
fun bunHealth(w: http.ResponseWriter, r: *http.Request) {
|
||||
val ctx = context.Background()
|
||||
db.NewSelect().ColumnExpr("1").Scan(ctx)
|
||||
fmt.Fprintln(w, "bun ok")
|
||||
}
|
||||
|
||||
fun bunUsers(w: http.ResponseWriter, r: *http.Request) {
|
||||
val ctx = context.Background()
|
||||
val model = BunUser("gotlin")
|
||||
|
||||
db.NewCreateTable().Model(model).IfNotExists().Exec(ctx)
|
||||
val user = BunUser("user-from-gotlin")
|
||||
db.NewInsert().Model(user).Exec(ctx)
|
||||
val total = db.NewSelect().Model(model).Count(ctx)
|
||||
|
||||
fmt.Fprintln(w, "bun users total:", total)
|
||||
}
|
||||
}
|
||||
|
||||
worker Counter {
|
||||
val counter = 0
|
||||
|
||||
fun getCount(): Int {
|
||||
return counter
|
||||
}
|
||||
fun increment() {
|
||||
counter += 1
|
||||
println(counter)
|
||||
}
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val postgresDsn = "postgresql://postgres:postgres@localhost/postgres?sslmode=disable"
|
||||
val sqlDb = sql.OpenDB(
|
||||
pgdriver.NewConnector(
|
||||
pgdriver.WithDSN(postgresDsn)
|
||||
)
|
||||
)
|
||||
val db = bun.NewDB(sqlDb, pgdialect.New())
|
||||
val counter = Counter()
|
||||
go {
|
||||
while(true) {
|
||||
select {
|
||||
every(1000) -> counter.increment()
|
||||
}
|
||||
}
|
||||
}
|
||||
val epicController = EpicControllerImpl(db)
|
||||
fmt.Println("serving http://localhost:8080")
|
||||
http.HandleFunc("/", epicController.hello)
|
||||
http.HandleFunc("/bun", epicController.bunHealth)
|
||||
http.HandleFunc("/bun/users", epicController.bunUsers)
|
||||
http.HandleFunc("/counter") { w, r ->
|
||||
fmt.Fprintln(w, "bun users total:", counter.getCount())
|
||||
}
|
||||
http.ListenAndServe(":8080", http.DefaultServeMux)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue