--- /dev/null
+package common
+
+const (
+ CrossTxPendingStatus uint8 = iota
+ CrossTxCompletedStatus
+ CrossTxRejectedStatus
+)
+
+const (
+ CrossTxSignPendingStatus uint8 = iota
+ CrossTxSignCompletedStatus
+ CrossTxSignRejectedStatus
+)
--- /dev/null
+package orm
+
+import (
+ "github.com/vapor/federation/types"
+)
+
+type Chain struct {
+ ID uint64 `gorm:"primary_key"`
+ Name string
+ BlockHeight uint64
+ BlockHash string
+ CreatedAt types.Timestamp
+ UpdatedAt types.Timestamp
+}
--- /dev/null
+package orm
+
+import (
+ "github.com/vapor/federation/types"
+)
+
+type CrossTransaction struct {
+ ID uint64 `gorm:"primary_key"`
+ ChainID uint64
+ BlockHeight uint64
+ BlockHash string
+ TxIndex uint64
+ MuxID string
+ TxHash string
+ RawTransaction string
+ Status uint8
+ CreatedAt types.Timestamp
+ UpdatedAt types.Timestamp
+
+ Chain *Chain `gorm:"foreignkey:ChainID"`
+}
--- /dev/null
+package orm
+
+import (
+ "github.com/vapor/federation/types"
+)
+
+type CrossTransactionInput struct {
+ ID uint64 `gorm:"primary_key"`
+ TxID uint64
+ SourcePos uint64
+ CreatedAt types.Timestamp
+ UpdatedAt types.Timestamp
+
+ CrossTransaction *CrossTransaction `gorm:"foreignkey:TxID"`
+}
--- /dev/null
+package orm
+
+import (
+ "github.com/vapor/federation/types"
+)
+
+type CrossTransactionSign struct {
+ ID uint64 `gorm:"primary_key"`
+ CrossTransactionID uint64
+ WarderID uint64
+ Signatures string
+ Status uint8
+ CreatedAt types.Timestamp
+ UpdatedAt types.Timestamp
+
+ CrossTransaction *CrossTransaction `gorm:"foreignkey:CrossTransactionID"`
+ Warder *Warder `gorm:"foreignkey:WarderID"`
+}
--- /dev/null
+package orm
+
+import (
+ "github.com/vapor/federation/types"
+)
+
+type Warder struct {
+ ID uint64
+ Pubkey string
+ CreatedAt types.Timestamp
+ UpdatedAt types.Timestamp
+}
--- /dev/null
+package types
+
+import (
+ "fmt"
+ "strconv"
+ "time"
+)
+
+type Timestamp time.Time
+
+func (t *Timestamp) Unix() int64 {
+ return time.Time(*t).Unix()
+}
+
+func (t *Timestamp) MarshalJSON() ([]byte, error) {
+ ts := time.Time(*t).Unix()
+ stamp := fmt.Sprint(ts)
+ return []byte(stamp), nil
+}
+
+func (t *Timestamp) UnmarshalJSON(b []byte) error {
+ ts, err := strconv.Atoi(string(b))
+ if err != nil {
+ return err
+ }
+
+ *t = Timestamp(time.Unix(int64(ts), 0))
+ return nil
+}