mirror of
https://github.com/strapi/strapi.git
synced 2025-07-08 01:22:29 +00:00
56 lines
1.1 KiB
JavaScript
56 lines
1.1 KiB
JavaScript
![]() |
'use strict';
|
||
|
|
||
|
/**
|
||
|
* Module dependencies
|
||
|
*/
|
||
|
|
||
|
// Public node modules.
|
||
|
const _ = require('lodash');
|
||
|
|
||
|
/**
|
||
|
* Utils functions for BookShelf
|
||
|
*/
|
||
|
|
||
|
module.exports = {
|
||
|
|
||
|
/**
|
||
|
* Find primary key
|
||
|
*/
|
||
|
|
||
|
getPK: function (collectionIdentity, collection, models) {
|
||
|
|
||
|
// This is not a Bookshelf collection, only the name.
|
||
|
if (_.isString(collectionIdentity) && !_.isUndefined(models)) {
|
||
|
const PK = _.findKey(_.get(models, collectionIdentity + '.attributes'), function(o) {
|
||
|
return o.hasOwnProperty('primary');
|
||
|
});
|
||
|
|
||
|
if (!_.isEmpty(PK)) {
|
||
|
return PK;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Collection undefined try to get the collection based on collectionIdentity
|
||
|
if (_.isUndefined(collection)) {
|
||
|
collection = _.get(strapi.bookshelf.collections, collectionIdentity);
|
||
|
}
|
||
|
|
||
|
// Impossible to match collectionIdentity before, try to use idAttribute
|
||
|
if (_.isObject(collection)) {
|
||
|
return collection.forge().idAttribute || 'id';
|
||
|
}
|
||
|
|
||
|
return 'id';
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Find primary key
|
||
|
*/
|
||
|
|
||
|
getCount: function (type) {
|
||
|
return strapi.bookshelf.collections[type].forge().count().then(function (count) {
|
||
|
return count;
|
||
|
});
|
||
|
}
|
||
|
}
|