mirror of
https://github.com/aclindsa/moneygo.git
synced 2024-12-26 15:42:27 -05:00
Add basic implementation of securities
This commit is contained in:
parent
0f393d2fbb
commit
5b71c181fc
1
db.go
1
db.go
@ -19,7 +19,6 @@ func initDB() *gorp.DbMap {
|
|||||||
dbmap.AddTableWithName(User{}, "users").SetKeys(true, "UserId")
|
dbmap.AddTableWithName(User{}, "users").SetKeys(true, "UserId")
|
||||||
dbmap.AddTableWithName(Session{}, "sessions").SetKeys(true, "SessionId")
|
dbmap.AddTableWithName(Session{}, "sessions").SetKeys(true, "SessionId")
|
||||||
dbmap.AddTableWithName(Account{}, "accounts").SetKeys(true, "AccountId")
|
dbmap.AddTableWithName(Account{}, "accounts").SetKeys(true, "AccountId")
|
||||||
dbmap.AddTableWithName(Security{}, "security").SetKeys(true, "SecurityId")
|
|
||||||
dbmap.AddTableWithName(Transaction{}, "transactions").SetKeys(true, "TransactionId")
|
dbmap.AddTableWithName(Transaction{}, "transactions").SetKeys(true, "TransactionId")
|
||||||
dbmap.AddTableWithName(Split{}, "splits").SetKeys(true, "SplitId")
|
dbmap.AddTableWithName(Split{}, "splits").SetKeys(true, "SplitId")
|
||||||
|
|
||||||
|
1
main.go
1
main.go
@ -62,6 +62,7 @@ func main() {
|
|||||||
servemux.HandleFunc("/static/", staticHandler)
|
servemux.HandleFunc("/static/", staticHandler)
|
||||||
servemux.HandleFunc("/session/", SessionHandler)
|
servemux.HandleFunc("/session/", SessionHandler)
|
||||||
servemux.HandleFunc("/user/", UserHandler)
|
servemux.HandleFunc("/user/", UserHandler)
|
||||||
|
servemux.HandleFunc("/security/", SecurityHandler)
|
||||||
|
|
||||||
listener, err := net.Listen("tcp", ":"+strconv.Itoa(port))
|
listener, err := net.Listen("tcp", ":"+strconv.Itoa(port))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,5 +1,11 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"log"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
type SecurityType int64
|
type SecurityType int64
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -17,3 +23,81 @@ type Security struct {
|
|||||||
Precision int64
|
Precision int64
|
||||||
Type SecurityType
|
Type SecurityType
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type SecurityList struct {
|
||||||
|
Securities *[]*Security `json:"securities"`
|
||||||
|
}
|
||||||
|
|
||||||
|
var security_map = map[int64]*Security{
|
||||||
|
1: &Security{
|
||||||
|
SecurityId: 1,
|
||||||
|
Name: "USD",
|
||||||
|
Precision: 2,
|
||||||
|
Type: Banknote},
|
||||||
|
2: &Security{
|
||||||
|
SecurityId: 2,
|
||||||
|
Name: "SPY",
|
||||||
|
Precision: 5,
|
||||||
|
Type: Stock},
|
||||||
|
}
|
||||||
|
|
||||||
|
var security_list []*Security
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
for _, value := range security_map {
|
||||||
|
security_list = append(security_list, value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSecurity(securityid int64) *Security {
|
||||||
|
s := security_map[securityid]
|
||||||
|
if s != nil {
|
||||||
|
return s
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetSecurities() []*Security {
|
||||||
|
return security_list
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *Security) Write(w http.ResponseWriter) error {
|
||||||
|
enc := json.NewEncoder(w)
|
||||||
|
return enc.Encode(s)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (sl *SecurityList) Write(w http.ResponseWriter) error {
|
||||||
|
enc := json.NewEncoder(w)
|
||||||
|
return enc.Encode(sl)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SecurityHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
|
if r.Method == "GET" {
|
||||||
|
securityid, err := GetURLID(r.URL.Path)
|
||||||
|
if err == nil {
|
||||||
|
security := GetSecurity(securityid)
|
||||||
|
if security == nil {
|
||||||
|
WriteError(w, 3 /*Invalid Request*/)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err := security.Write(w)
|
||||||
|
if err != nil {
|
||||||
|
WriteError(w, 999 /*Internal Error*/)
|
||||||
|
log.Print(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var sl SecurityList
|
||||||
|
securities := GetSecurities()
|
||||||
|
sl.Securities = &securities
|
||||||
|
err := (&sl).Write(w)
|
||||||
|
if err != nil {
|
||||||
|
WriteError(w, 999 /*Internal Error*/)
|
||||||
|
log.Print(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WriteError(w, 3 /*Invalid Request*/)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user