18F/e-QIP-prototype

View on GitHub
api/clearancelevel.go

Summary

Maintainability
A
0 mins
Test Coverage
package api

import (
    "encoding/json"
)

// ClearanceLevel is a basic input.
type ClearanceLevel struct {
    PayloadLevel       Payload `json:"Level" sql:"-"`
    PayloadExplanation Payload `json:"Explanation" sql:"-"`

    Level       *Radio    `json:"-"`
    Explanation *Textarea `json:"-"`
}

// Unmarshal bytes in to the entity properties.
func (entity *ClearanceLevel) Unmarshal(raw []byte) error {
    err := json.Unmarshal(raw, entity)
    if err != nil {
        return err
    }

    level, err := entity.PayloadLevel.Entity()
    if err != nil {
        return err
    }
    entity.Level = level.(*Radio)

    explanation, err := entity.PayloadExplanation.Entity()
    if err != nil {
        return err
    }
    entity.Explanation = explanation.(*Textarea)

    return err
}

// Marshal to payload structure
func (entity *ClearanceLevel) Marshal() Payload {
    if entity.Level != nil {
        entity.PayloadLevel = entity.Level.Marshal()
    }
    if entity.Explanation != nil {
        entity.PayloadExplanation = entity.Explanation.Marshal()
    }
    return MarshalPayloadEntity("clearancelevel", entity)
}