add timezone to org

This commit is contained in:
Patrick Nagurny
2019-06-27 16:43:18 -04:00
parent 12bca2cb1f
commit a67f270b6d
5 changed files with 123 additions and 6 deletions

View File

@@ -22,6 +22,7 @@ import (
* @apiSuccess {String} name Name of the Org.
* @apiSuccess {String} currency Three letter currency code.
* @apiSuccess {Number} precision How many digits the currency goes out to.
* @apiSuccess {String} timezone Timezone to use for accounting.
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
@@ -32,6 +33,7 @@ import (
* "name": "MyOrg",
* "currency": "USD",
* "precision": 2,
* "timezone": "America/New_York"
* }
*
* @apiUse NotAuthorizedError
@@ -66,6 +68,7 @@ func GetOrg(w rest.ResponseWriter, r *rest.Request) {
* @apiSuccess {String} name Name of the Org.
* @apiSuccess {String} currency Three letter currency code.
* @apiSuccess {Number} precision How many digits the currency goes out to.
@apiSuccess {String} timezone Timezone to use for accounting.
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
@@ -77,6 +80,7 @@ func GetOrg(w rest.ResponseWriter, r *rest.Request) {
* "name": "MyOrg",
* "currency": "USD",
* "precision": 2,
* "timezone": "America/New_York"
* }
* ]
*
@@ -109,6 +113,7 @@ func GetOrgs(w rest.ResponseWriter, r *rest.Request) {
* @apiParam {String} name Name of the Org.
* @apiParam {String} currency Three letter currency code.
* @apiParam {Number} precision How many digits the currency goes out to.
* @apiParam {String} timezone Timezone to use for accounting.
*
* @apiSuccess {String} id Id of the Org.
* @apiSuccess {Date} inserted Date Org was created
@@ -116,6 +121,7 @@ func GetOrgs(w rest.ResponseWriter, r *rest.Request) {
* @apiSuccess {String} name Name of the Org.
* @apiSuccess {String} currency Three letter currency code.
* @apiSuccess {Number} precision How many digits the currency goes out to.
* @apiSuccess {String} timezone Timezone to use for accounting.
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
@@ -126,6 +132,7 @@ func GetOrgs(w rest.ResponseWriter, r *rest.Request) {
* "name": "MyOrg",
* "currency": "USD",
* "precision": 2,
* "timezone": "America/New_York"
* }
*
* @apiUse NotAuthorizedError
@@ -167,6 +174,7 @@ func PostOrg(w rest.ResponseWriter, r *rest.Request) {
* @apiSuccess {String} name Name of the Org.
* @apiSuccess {String} currency Three letter currency code.
* @apiSuccess {Number} precision How many digits the currency goes out to.
* @apiSuccess {String} timezone Timezone to use for accounting.
*
* @apiSuccessExample Success-Response:
* HTTP/1.1 200 OK
@@ -177,6 +185,7 @@ func PostOrg(w rest.ResponseWriter, r *rest.Request) {
* "name": "MyOrg",
* "currency": "USD",
* "precision": 2,
* "timezone": "America/New_York"
* }
*
* @apiUse NotAuthorizedError

View File

@@ -21,7 +21,7 @@ type OrgInterface interface {
DeleteInvite(string) error
}
const orgFields = "LOWER(HEX(o.id)),o.inserted,o.updated,o.name,o.currency,o.`precision`"
const orgFields = "LOWER(HEX(o.id)),o.inserted,o.updated,o.name,o.currency,o.`precision`,o.timezone"
const inviteFields = "i.id,LOWER(HEX(i.orgId)),i.inserted,i.updated,i.email,i.accepted"
func (db *DB) CreateOrg(org *types.Org, userId string, accounts []*types.Account) (err error) {
@@ -46,7 +46,7 @@ func (db *DB) CreateOrg(org *types.Org, userId string, accounts []*types.Account
org.Updated = org.Inserted
// create org
query1 := "INSERT INTO org(id,inserted,updated,name,currency,`precision`) VALUES(UNHEX(?),?,?,?,?,?)"
query1 := "INSERT INTO org(id,inserted,updated,name,currency,`precision`,timezone) VALUES(UNHEX(?),?,?,?,?,?,?)"
res, err := tx.Exec(
query1,
@@ -56,6 +56,7 @@ func (db *DB) CreateOrg(org *types.Org, userId string, accounts []*types.Account
org.Name,
org.Currency,
org.Precision,
org.Timezone,
)
if err != nil {
@@ -126,11 +127,12 @@ func (db *DB) CreateOrg(org *types.Org, userId string, accounts []*types.Account
func (db *DB) UpdateOrg(org *types.Org) error {
org.Updated = time.Now()
query := "UPDATE org SET updated = ?, name = ? WHERE id = UNHEX(?)"
query := "UPDATE org SET updated = ?, name = ?, timezone = ? WHERE id = UNHEX(?)"
_, err := db.Exec(
query,
util.TimeToMs(org.Updated),
org.Name,
org.Timezone,
org.Id,
)
@@ -143,7 +145,7 @@ func (db *DB) GetOrg(orgId string, userId string) (*types.Org, error) {
var updated int64
err := db.QueryRow("SELECT "+orgFields+" FROM org o JOIN userorg ON userorg.orgId = o.id WHERE o.id = UNHEX(?) AND userorg.userId = UNHEX(?)", orgId, userId).
Scan(&o.Id, &inserted, &updated, &o.Name, &o.Currency, &o.Precision)
Scan(&o.Id, &inserted, &updated, &o.Name, &o.Currency, &o.Precision, &o.Timezone)
switch {
case err == sql.ErrNoRows:
@@ -173,7 +175,7 @@ func (db *DB) GetOrgs(userId string) ([]*types.Org, error) {
var inserted int64
var updated int64
err = rows.Scan(&o.Id, &inserted, &updated, &o.Name, &o.Currency, &o.Precision)
err = rows.Scan(&o.Id, &inserted, &updated, &o.Name, &o.Currency, &o.Precision, &o.Timezone)
if err != nil {
return nil, err
}

View File

@@ -11,4 +11,5 @@ type Org struct {
Name string `json:"name"`
Currency string `json:"currency"`
Precision int `json:"precision"`
Timezone string `json:"timezone"`
}