const { Key } = require('./key')

/**
 * Data includes a model's key and non-key fields.
 * @param {Object} [fields] field (non-key) values
 */
class Data extends Key {
  constructor (Cls, encodedKeys, keyComponents, fields) {
    super(Cls, encodedKeys, keyComponents)
    this.data = fields
  }

  get key () {
    return new Key(this.Cls, this.encodedKeys, this.keyComponents)
  }

  get vals () {
    return { ...this.keyComponents, ...this.data }
  }
}

module.exports = {
  Data
}