app/addons/databases/resources.js (82 lines of code) (raw):

// Licensed under the Apache License, Version 2.0 (the "License"); you may not // use this file except in compliance with the License. You may obtain a copy of // the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the // License for the specific language governing permissions and limitations under // the License. import app from "../../app"; import Helpers from "../../helpers"; import FauxtonAPI from "../../core/api"; import Documents from "../documents/resources"; var Databases = FauxtonAPI.addon(); Databases.DocLimit = 100; Databases.Model = FauxtonAPI.Model.extend({ partitioned: false, setPartitioned: function (partitioned) { this.partitioned = partitioned; }, documentation: function () { return FauxtonAPI.constants.DOC_URLS.ALL_DBS; }, buildAllDocs: function (params) { this.allDocs = new Documents.AllDocs(null, { database: this, params: params }); return this.allDocs; }, isNew: function () { // Databases are never new, to make Backbone do a PUT return false; }, isSystemDatabase: function () { return app.utils.isSystemDatabase(this.id); }, url: function (context) { if (context === "index") { return "/database/" + this.safeID() + "/_all_docs"; } else if (context === "web-index") { return "#/database/" + this.safeID() + "/_all_docs?limit=" + Databases.DocLimit; } else if (context === "apiurl") { return Helpers.getApiUrl("/database/" + this.safeID() + "/_all_docs"); } else if (context === "changes") { return FauxtonAPI.urls('changes', 'app', this.safeID(), '', '?descending=true&limit=100&include_docs=true'); } else if (context === "changes-apiurl") { return FauxtonAPI.urls('changes', 'apiurl', this.safeID(), '?descending=true&limit=100&include_docs=true'); } else if (context === "app") { return "/database/" + this.safeID(); } if (this.partitioned) { return Helpers.getServerUrl("/" + this.safeID()) + '?partitioned=true'; } return Helpers.getServerUrl("/" + this.safeID()); }, safeID: function () { return app.utils.safeURLName(this.id); }, buildChanges: function (params) { if (!params.limit) { params.limit = 100; } this.changes = new Databases.Changes({ database: this, params: params }); return this.changes; } }); Databases.Changes = FauxtonAPI.Collection.extend({ initialize: function (options) { this.database = options.database; this.params = options.params; }, documentation: function () { return FauxtonAPI.constants.DOC_URLS.CHANGES; }, url: function (context) { var query = ""; if (this.params) { query = "?" + app.utils.queryParams(this.params); } if (!context) { context = 'server';} return FauxtonAPI.urls('changes', context, this.database.safeID(), query); }, parse: function (resp) { this.last_seq = resp.last_seq; return resp.results; } }); export default Databases;