Skip to content

Commit a42a5bf

Browse files
Merge pull request #23 from contentstack/snippet-implementation
Support Global_fields
2 parents e572d07 + 631dbba commit a42a5bf

File tree

7 files changed

+9479
-9
lines changed

7 files changed

+9479
-9
lines changed

examples/node/contentstack-demo.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ class ContentstackDemo {
2626
*/
2727
getEntries(contentTypeUid) {
2828
contentTypeUid = contentTypeUid || 'source'
29-
return this.Stack.ContentType(contentTypeUid).Query().toJSON().find()
29+
return this.Stack.ContentType('test').Query().includeContentType().toJSON().find()
30+
//return this.Stack.getContentTypes(contentTypeUid)
3031

3132
}
3233

@@ -61,7 +62,9 @@ class ContentstackDemo {
6162
*/
6263
getContentType(uid) {
6364
//contentTypeUid = contentTypeUid || 'source'
64-
return this.Stack.getContentType(uid)
65+
// return this.Stack.getContentType(uid)
66+
// return this.Stack.ContentType(uid).Entry("blta07130f8b344b260").includeReferenceContentTypeUID().includeSchema().toJSON().fetch()
67+
//return this.Stack.getContentTypes({"include_global_field_schema": true})
6568
}
6669

6770
/**

npm-debug.log

Lines changed: 9347 additions & 0 deletions
Large diffs are not rendered by default.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "contentstack",
3-
"version": "3.7.1",
3+
"version": "3.8.0",
44
"description": "Contentstack Javascript SDK",
55
"homepage": "https://www.contentstack.com/",
66
"author": {

src/core/lib/request.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,11 @@ export default function Request(options) {
4242
queryParams = serialize(options.body);
4343
}
4444

45-
4645
fetch(url + '?' + queryParams, {
4746
method: 'GET',
4847
headers: headers
4948
})
50-
.then(function(response) {
49+
.then(function(response) {
5150
if (response.ok && response.status === 200) {
5251
let data = response.json();
5352
resolve(data);

src/core/lib/utils.js

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,15 +174,40 @@ export function resultWrapper(result) {
174174
return result;
175175
};
176176

177+
// // spread the result object
178+
// export function spreadResult(result) {
179+
// let _results = [];
180+
// if (result && Object.keys(result).length) {
181+
// if (typeof result.entries !== 'undefined') _results.push(result.entries);
182+
// if (typeof result.assets !== 'undefined') _results.push(result.assets);
183+
// if (typeof result.content_type !== 'undefined' || typeof result.schema !== 'undefined') _results.push(result.content_type || result.schema);
184+
// if (typeof result.count !== 'undefined') _results.push(result.count);
185+
// if (typeof result.entry !== 'undefined') _results = result.entry;
186+
// if (typeof result.asset !== 'undefined') _results = result.asset;
187+
// if (typeof result.items !== 'undefined') _results.push(result);
188+
// }
189+
// return _results;
190+
// };
191+
177192
// spread the result object
178193
export function spreadResult(result) {
179194
let _results = [];
180195
if (result && Object.keys(result).length) {
181-
if (typeof result.entries !== 'undefined') _results.push(result.entries);
196+
if (typeof result.entries !== 'undefined') {
197+
_results.push(result.entries);
198+
if(result.content_type){
199+
_results['schema'] = result.content_type
200+
}
201+
}
182202
if (typeof result.assets !== 'undefined') _results.push(result.assets);
183203
if (typeof result.content_type !== 'undefined' || typeof result.schema !== 'undefined') _results.push(result.content_type || result.schema);
184204
if (typeof result.count !== 'undefined') _results.push(result.count);
185-
if (typeof result.entry !== 'undefined') _results = result.entry;
205+
if (typeof result.entry !== 'undefined') {
206+
_results = result.entry;
207+
if(result.schema){
208+
_results['schema'] = result.schema
209+
}
210+
}
186211
if (typeof result.asset !== 'undefined') _results = result.asset;
187212
if (typeof result.items !== 'undefined') _results.push(result);
188213
}

src/core/modules/entry.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@ export default class Entry {
190190
*/
191191
includeSchema() {
192192
this._query['include_schema'] = true;
193+
this._query['include_snippet_schema'] = true;
193194
return this;
194195
}
195196

@@ -226,6 +227,7 @@ export default class Entry {
226227
*/
227228
includeContentType() {
228229
this._query['include_content_type'] = true;
230+
this._query['include_snippet_schema'] = true;
229231
return this;
230232
}
231233

src/core/modules/query.js

Lines changed: 96 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -463,6 +463,14 @@ export default class Query extends Entry {
463463
* @param {object} query - RAW (JSON) queries
464464
* @returns {Query}
465465
* @instance
466+
* @example
467+
* let blogQuery = Stack().ContentType('example').Query();
468+
* let data = blogQuery.query({"brand": {"$nin_query": {"title": "Apple Inc."}}}).find()
469+
* data.then(function(result) {
470+
* // ‘result’ contains the total count.
471+
* },function (error) {
472+
* // error function
473+
* })
466474
*/
467475
query(query) {
468476
if (typeof query === "object") {
@@ -473,6 +481,92 @@ export default class Query extends Entry {
473481
}
474482
}
475483

484+
/**
485+
* @method referenceIn
486+
* @memberOf Query
487+
* @description Retrieve entries that satisfy the query conditions made on referenced fields.
488+
* @param {Query} query - RAW (JSON) queries
489+
* @returns {Query}
490+
* @instance
491+
* @example
492+
* <caption> referenceIn with Query instances</caption>
493+
* let blogQuery = Stack().ContentType('example').Query();
494+
* let Query = Stack.ContentType('blog').Query().where('title', 'Demo').find()
495+
* let data = blogQuery.referenceIn("brand", Query).find()
496+
* data.then(function(result) {
497+
* // ‘result’ contains the total count.
498+
* },function (error) {
499+
* // error function
500+
* })
501+
*
502+
* @example
503+
* <caption> referenceIn with raw queries</caption>
504+
* let blogQuery = Stack().ContentType('example').Query();
505+
* let data = blogQuery.referenceIn("brand", {'title': 'Demo'}).find()
506+
* data.then(function(result) {
507+
* // ‘result’ contains the total count.
508+
* },function (error) {
509+
* // error function
510+
* })
511+
*/
512+
referenceIn(key, query) {
513+
var _query = {}
514+
if (query instanceof Query && query._query.query) {
515+
_query["$in_query"] = query._query.query;
516+
} else if (typeof query === "object") {
517+
_query["$in_query"] = query;
518+
}
519+
if (this._query['query'][key]) {
520+
this._query['query'][key] = this._query['query'][key].concat(_query);
521+
} else {
522+
this._query['query'][key] = _query;
523+
}
524+
return this;
525+
}
526+
527+
528+
/**
529+
* @method referenceNotIn
530+
* @memberOf Query
531+
* @description Retrieve entries that does not satisfy the query conditions made on referenced fields.
532+
* @param {Query} query - RAW (JSON) queries
533+
* @returns {Query}
534+
* @instance
535+
* @example
536+
* <caption> referenceNotIn with Query instances</caption>
537+
* let blogQuery = Stack().ContentType('example').Query();
538+
* let data = blogQuery.referenceNotIn("brand", {'title': 'Demo'}).find()
539+
* data.then(function(result) {
540+
* // ‘result’ contains the total count.
541+
* },function (error) {
542+
* // error function
543+
* })
544+
*
545+
* @example
546+
* <caption> referenceNotIn with raw queries</caption>
547+
* let blogQuery = Stack().ContentType('example').Query();
548+
* let data = blogQuery.referenceNotIn("brand", {'title': 'Demo'}).find()
549+
* data.then(function(result) {
550+
* // ‘result’ contains the total count.
551+
* },function (error) {
552+
* // error function
553+
* })
554+
*/
555+
referenceNotIn(key, query) {
556+
var _query = {}
557+
if (query instanceof Query && query._query.query) {
558+
_query["$nin_query"] = query._query.query;
559+
} else if (typeof query === "object") {
560+
_query["$nin_query"] = query;
561+
}
562+
if (this._query['query'][key]) {
563+
this._query['query'][key] = this._query['query'][key].concat(_query);
564+
} else {
565+
this._query['query'][key] = _query;
566+
}
567+
return this;
568+
}
569+
476570
/**
477571
* @method tags
478572
* @memberOf Query
@@ -539,7 +633,7 @@ export default class Query extends Entry {
539633
return this;
540634
}
541635

542-
/**
636+
/**
543637
* @method addParam
544638
* @description Includes query parameters in your queries.
545639
* @memberOf Query
@@ -652,7 +746,7 @@ export default class Query extends Entry {
652746
query: this._query
653747
}
654748
};
655-
return Utils.sendRequest(this);
749+
return Utils.sendRequest(this);
656750
}
657751

658752
/**

0 commit comments

Comments
 (0)