tanam
Version:
Pluggable CMS for Firebase
288 lines • 10.2 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
const admin = require("firebase-admin");
function createDefaultDocuments() {
return __awaiter(this, void 0, void 0, function* () {
const documentsCollection = admin.firestore()
.collection('tanam').doc(process.env.GCLOUD_PROJECT)
.collection('document-types');
const blog = {
id: 'blog',
title: 'Blog post',
description: 'Blog posts and articles that has a title, leading image and a content body',
icon: 'local_library',
slug: 'blog',
standalone: true,
documentStatusDefault: 'published',
created: admin.firestore.FieldValue.serverTimestamp(),
updated: admin.firestore.FieldValue.serverTimestamp(),
documentCount: {
published: 0,
unpublished: 0,
scheduled: 0,
},
fields: [
{
title: 'Title',
key: 'title',
type: 'input-text',
isTitle: true,
validators: ['required'],
},
{
title: 'Featured image',
key: 'featuredImage',
type: 'image',
validators: [],
},
{
title: 'Author',
key: 'author',
type: 'document-reference',
documentType: 'author',
validators: [],
},
{
title: 'Content',
key: 'content',
type: 'textbox-rich',
validators: ['required'],
},
],
};
const event = {
id: 'event',
title: 'Event',
description: 'Events and meetups with a location, start and end time',
icon: 'event',
slug: 'event',
standalone: true,
documentStatusDefault: 'published',
created: admin.firestore.FieldValue.serverTimestamp(),
updated: admin.firestore.FieldValue.serverTimestamp(),
documentCount: {
published: 0,
unpublished: 0,
scheduled: 0,
},
fields: [
{
title: 'Title',
key: 'title',
type: 'input-text',
isTitle: true,
validators: ['required'],
},
{
title: 'Start time',
key: 'timeStart',
type: 'date-time',
validators: ['required'],
},
{
title: 'End time',
key: 'timeEnd',
type: 'date-time',
validators: ['required'],
},
{
title: 'Location',
key: 'location',
type: 'document-reference',
documentType: 'location',
validators: [],
},
{
title: 'Featured image',
key: 'featuredImage',
type: 'image',
validators: [],
},
{
title: 'Content',
key: 'content',
type: 'textbox-rich',
validators: ['required'],
},
],
};
const location = {
id: 'location',
title: 'Location',
description: 'Location data such as venues, addresses or map pointers',
icon: 'place',
slug: 'location',
standalone: false,
documentStatusDefault: 'published',
created: admin.firestore.FieldValue.serverTimestamp(),
updated: admin.firestore.FieldValue.serverTimestamp(),
documentCount: {
published: 0,
unpublished: 0,
scheduled: 0,
},
fields: [
{
title: 'Title',
key: 'title',
type: 'input-text',
isTitle: true,
validators: ['required'],
},
{
title: 'Address field 1',
key: 'address1',
type: 'input-text',
validators: [],
},
{
title: 'Address field 2',
key: 'address2',
type: 'input-text',
validators: [],
},
{
title: 'City',
key: 'city',
type: 'input-text',
validators: [],
},
{
title: 'Postal code',
key: 'postCode',
type: 'input-text',
validators: [],
},
{
title: 'Region (state/province)',
key: 'region',
type: 'input-text',
validators: [],
},
{
title: 'Country',
key: 'country',
type: 'input-text',
validators: [],
},
{
title: 'Maps URL',
key: 'mapsUrl',
type: 'input-text',
validators: [],
},
],
};
const author = {
id: 'author',
title: 'Author',
description: 'Author profiles',
icon: 'person',
slug: 'profile',
standalone: false,
documentStatusDefault: 'published',
created: admin.firestore.FieldValue.serverTimestamp(),
updated: admin.firestore.FieldValue.serverTimestamp(),
documentCount: {
published: 0,
unpublished: 0,
scheduled: 0,
},
fields: [
{
title: 'Name',
key: 'name',
type: 'input-text',
isTitle: true,
validators: ['required'],
},
{
title: 'Email',
key: 'email',
type: 'input-text',
validators: [],
},
{
title: 'Profile image URL',
key: 'photoUrl',
type: 'input-text',
validators: [],
},
{
title: 'Profile page URL',
key: 'website',
type: 'input-text',
validators: [],
},
{
title: 'Blurb (short description)',
key: 'blurb',
type: 'textbox-plain',
validators: [],
},
{
title: 'About',
key: 'about',
type: 'textbox-rich',
validators: [],
},
],
};
const page = {
id: 'page',
title: 'Page',
description: 'A regular web page such as front page, or contact page etc.',
icon: 'chrome_reader_mode',
slug: '',
standalone: true,
documentStatusDefault: 'published',
created: admin.firestore.FieldValue.serverTimestamp(),
updated: admin.firestore.FieldValue.serverTimestamp(),
documentCount: {
published: 0,
unpublished: 0,
scheduled: 0,
},
fields: [
{
title: 'Title',
key: 'title',
type: 'input-text',
isTitle: true,
validators: ['required'],
},
{
title: 'Page layout',
key: 'layout',
type: 'input-text',
defaultValue: 'default',
validators: [],
},
{
title: 'Content',
key: 'content',
type: 'textbox-rich',
validators: [],
},
],
};
console.log(`[document.service.createDefaultDocuments] ${JSON.stringify({ blog, event, location, author, page }, null, 2)}`);
return Promise.all([
documentsCollection.doc(blog.id).set(blog),
documentsCollection.doc(event.id).set(event),
documentsCollection.doc(location.id).set(location),
documentsCollection.doc(author.id).set(author),
documentsCollection.doc(page.id).set(page),
]);
});
}
exports.createDefaultDocuments = createDefaultDocuments;
//# sourceMappingURL=document-type.service.js.map