var Post = DS.Model.extend({
    uuid: DS.attr('string'),
    title: DS.attr('string'),
    slug: DS.attr('string'),
    markdown: DS.attr('string', {defaultValue: ''}),
    html: DS.attr('string'),
    image: DS.attr('string'),
    featured: DS.attr('boolean', {defaultValue: false}),
    page: DS.attr('boolean', {defaultValue: false}),
    status: DS.attr('string', {defaultValue: 'draft'}),
    language: DS.attr('string', {defaultValue: 'en_US'}),
    meta_title: DS.attr('string'),
    meta_description: DS.attr('string'),
    author: DS.belongsTo('user',  { async: true }),
    created_at: DS.attr('moment-date'),
    created_by: DS.belongsTo('user', { async: true }),
    updated_at: DS.attr('moment-date'),
    updated_by: DS.belongsTo('user', { async: true }),
    published_at: DS.attr('moment-date'),
    published_by: DS.belongsTo('user', { async: true }),
    tags: DS.hasMany('tag', { async: true }),

    generateSlug: function () {
        var title = this.get('title'),
            url;

        if (!title) {
            return;
        }

        url = this.get('ghostPaths').apiUrl('slugs', 'post', encodeURIComponent(title));

        return ic.ajax.request(url, {
                type: 'GET'
            });
    },

    validate: function () {
        var validationErrors = [];

        if (!this.get('title.length')) {
            validationErrors.push({
                message: 'You must specify a title for the post.'
            });
        }

        return validationErrors;
    }.property('title')
});

export default Post;