'use strict';

const api = require('../api.js');
const events = require('../events.js');

class Snapshot extends events.EventTarget {
    constructor() {
        super();
        this._orig = {};
        this._updateFromResponse({});
    }

    get operation() { return this._operation; }
    get type()      { return this._type; }
    get id()        { return this._id; }
    get user()      { return this._user; }
    get data()      { return this._data; }
    get time()      { return this._time; }

    static fromResponse(response) {
        const ret = new Snapshot();
        ret._updateFromResponse(response);
        return ret;
    }

    _updateFromResponse(response) {
        const map = {
            _operation: response.operation,
            _type:      response.type,
            _id:        response.id,
            _user:      response.user,
            _data:      response.data,
            _time:      response.time,
        };

        Object.assign(this, map);
    }
}

module.exports = Snapshot;
