mirror of
https://github.com/balzack/databag.git
synced 2025-02-12 03:29:16 +00:00
update card revision on status changes
This commit is contained in:
parent
69d9736152
commit
50f1e9bb6e
@ -69,14 +69,23 @@ func AddCard(w http.ResponseWriter, r *http.Request) {
|
|||||||
card.Node = identity.Node
|
card.Node = identity.Node
|
||||||
card.ProfileRevision = identity.Revision
|
card.ProfileRevision = identity.Revision
|
||||||
card.Status = APP_CARDCONFIRMED
|
card.Status = APP_CARDCONFIRMED
|
||||||
if err := store.DB.Save(&card).Error; err != nil {
|
|
||||||
|
// save and update contact revision
|
||||||
|
err = store.DB.Transaction(func(tx *gorm.DB) error {
|
||||||
|
if res := store.DB.Save(&card).Error; res != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
if res := store.DB.Model(&account).Update("card_revision", account.CardRevision + 1).Error; res != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
ErrResponse(w, http.StatusInternalServerError, err)
|
ErrResponse(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO UPDATE CONTACT REVISION
|
SetStatus(account)
|
||||||
// TODO SET STATUS
|
|
||||||
|
|
||||||
WriteResponse(w, getCardModel(&card))
|
WriteResponse(w, getCardModel(&card))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,6 +45,7 @@ func SetCardStatus(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
// update card
|
// update card
|
||||||
card.Status = status
|
card.Status = status
|
||||||
|
card.DataRevision += 1
|
||||||
if token != "" {
|
if token != "" {
|
||||||
card.OutToken = token
|
card.OutToken = token
|
||||||
}
|
}
|
||||||
@ -57,14 +58,22 @@ func SetCardStatus(w http.ResponseWriter, r *http.Request) {
|
|||||||
card.InToken = hex.EncodeToString(data)
|
card.InToken = hex.EncodeToString(data)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := store.DB.Save(&card).Error; err != nil {
|
// save and update contact revision
|
||||||
|
err = store.DB.Transaction(func(tx *gorm.DB) error {
|
||||||
|
if res := store.DB.Save(&card).Error; res != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
if res := store.DB.Model(&account).Update("card_revision", account.CardRevision + 1).Error; res != nil {
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
ErrResponse(w, http.StatusInternalServerError, err)
|
ErrResponse(w, http.StatusInternalServerError, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO UPDATE CARD REVISION, CONTACT REVISION
|
SetStatus(account)
|
||||||
// TODO SET STATUS
|
|
||||||
|
|
||||||
WriteResponse(w, getCardModel(&card));
|
WriteResponse(w, getCardModel(&card));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,14 +2,18 @@ package databag
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
"encoding/json"
|
||||||
|
"github.com/gorilla/websocket"
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestConnectContact(t *testing.T) {
|
func TestConnectContact(t *testing.T) {
|
||||||
var card Card
|
var card Card
|
||||||
|
var revision Revision
|
||||||
var msg DataMessage
|
var msg DataMessage
|
||||||
var vars map[string]string
|
var vars map[string]string
|
||||||
|
var cardRevision int64
|
||||||
|
|
||||||
// create some contacts for this test
|
// create some contacts for this test
|
||||||
access := AddTestContacts(t, "connect", 2)
|
access := AddTestContacts(t, "connect", 2)
|
||||||
@ -20,12 +24,27 @@ func TestConnectContact(t *testing.T) {
|
|||||||
GetProfileMessage(w, r)
|
GetProfileMessage(w, r)
|
||||||
assert.NoError(t, ReadResponse(w, &msg))
|
assert.NoError(t, ReadResponse(w, &msg))
|
||||||
|
|
||||||
|
// app connects websocket
|
||||||
|
ws := getTestWebsocket()
|
||||||
|
announce := Announce{ AppToken: access[1] }
|
||||||
|
data, _ := json.Marshal(&announce)
|
||||||
|
ws.WriteMessage(websocket.TextMessage, data)
|
||||||
|
_, data, _ = ws.ReadMessage()
|
||||||
|
assert.NoError(t, json.Unmarshal(data, &revision))
|
||||||
|
cardRevision = revision.Card
|
||||||
|
|
||||||
// add A card in B
|
// add A card in B
|
||||||
r, w, _ = NewRequest("POST", "/contact/cards", &msg)
|
r, w, _ = NewRequest("POST", "/contact/cards", &msg)
|
||||||
SetBearerAuth(r, access[1])
|
SetBearerAuth(r, access[1])
|
||||||
AddCard(w, r)
|
AddCard(w, r)
|
||||||
assert.NoError(t, ReadResponse(w, &card))
|
assert.NoError(t, ReadResponse(w, &card))
|
||||||
|
|
||||||
|
// profile revision incremented
|
||||||
|
_, data, _ = ws.ReadMessage()
|
||||||
|
assert.NoError(t, json.Unmarshal(data, &revision))
|
||||||
|
assert.NotEqual(t, cardRevision, revision.Card)
|
||||||
|
cardRevision = revision.Card
|
||||||
|
|
||||||
// update A status to connecting
|
// update A status to connecting
|
||||||
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/status", APP_CARDCONNECTING)
|
r, w, _ = NewRequest("PUT", "/contact/cards/{cardId}/status", APP_CARDCONNECTING)
|
||||||
vars = map[string]string{ "cardId": card.CardId }
|
vars = map[string]string{ "cardId": card.CardId }
|
||||||
@ -34,6 +53,14 @@ func TestConnectContact(t *testing.T) {
|
|||||||
SetCardStatus(w, r)
|
SetCardStatus(w, r)
|
||||||
assert.NoError(t, ReadResponse(w, &card))
|
assert.NoError(t, ReadResponse(w, &card))
|
||||||
|
|
||||||
|
// profile revision incremented
|
||||||
|
_, data, _ = ws.ReadMessage()
|
||||||
|
assert.NoError(t, json.Unmarshal(data, &revision))
|
||||||
|
assert.NotEqual(t, cardRevision, revision.Card)
|
||||||
|
cardRevision = revision.Card
|
||||||
|
|
||||||
|
PrintMsg(revision)
|
||||||
|
|
||||||
// get open message to A
|
// get open message to A
|
||||||
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}/openMessage", nil)
|
r, w, _ = NewRequest("GET", "/contact/cards/{cardId}/openMessage", nil)
|
||||||
vars = map[string]string{ "cardId": card.CardId }
|
vars = map[string]string{ "cardId": card.CardId }
|
||||||
|
Loading…
Reference in New Issue
Block a user