diff --git a/frontend/src/activity/activity.services.js b/frontend/src/activity/activity.services.js deleted file mode 100644 index 6e9c7e735b713052b7266ec2553986b6cf2130ce..0000000000000000000000000000000000000000 --- a/frontend/src/activity/activity.services.js +++ /dev/null @@ -1,16 +0,0 @@ -var ActivityServices = angular.module('metabase.activity.services', ['ngResource', 'ngCookies']); - -ActivityServices.factory('Activity', ['$resource', '$cookies', function($resource, $cookies) { - return $resource('/api/activity', {}, { - list: { - method: 'GET', - isArray: true - }, - - recent_views: { - url: '/api/activity/recent_views', - method: 'GET', - isArray: true - } - }); -}]); diff --git a/frontend/src/admin/databases/databases.controllers.js b/frontend/src/admin/databases/databases.controllers.js index b92706071081ef2bbd8b2604b6bf2c560bf13306..a00fdc25b384060f447e8762958fdcaf39d075bd 100644 --- a/frontend/src/admin/databases/databases.controllers.js +++ b/frontend/src/admin/databases/databases.controllers.js @@ -5,7 +5,7 @@ import DatabaseList from "./components/DatabaseList.jsx"; import DatabaseEdit from "./components/DatabaseEdit.jsx"; -var DatabasesControllers = angular.module('metabaseadmin.databases.controllers', ['metabase.metabase.services']); +var DatabasesControllers = angular.module('metabaseadmin.databases.controllers', ['metabase.services']); DatabasesControllers.controller('DatabaseList', ['$scope', '$routeParams', 'Metabase', function($scope, $routeParams, Metabase) { diff --git a/frontend/src/app.js b/frontend/src/app.js index 47906c94bcaef820b3ce2e6972d7ee94ab591586..8bccc0487b5c5184113fd6aed3357e506f20df40 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -3,7 +3,6 @@ var Metabase = angular.module('metabase', [ 'ngRoute', 'ngCookies', 'ui.bootstrap', // bootstrap LIKE widgets via angular directives - 'metabase.activity.services', 'metabase.auth', 'metabase.filters', 'metabase.directives', diff --git a/frontend/src/card/card.services.js b/frontend/src/card/card.services.js index d69e850f86ceede870d935e2ff141224b5ec23c0..537e0fb8566f089aef32f7735cffad02b48bd806 100644 --- a/frontend/src/card/card.services.js +++ b/frontend/src/card/card.services.js @@ -5,84 +5,6 @@ import { normal, harmony } from 'metabase/lib/colors' // Card Services var CardServices = angular.module('metabase.card.services', ['ngResource', 'ngCookies']); -CardServices.factory('Card', ['$resource', '$cookies', function($resource, $cookies) { - return $resource('/api/card/:cardId', {}, { - list: { - url: '/api/card/?f=:filterMode', - method: 'GET', - isArray: true - }, - create: { - url: '/api/card', - method: 'POST', - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - get: { - method: 'GET', - params: { - cardId: '@cardId' - } - }, - update: { - method: 'PUT', - params: { - cardId: '@id' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - delete: { - method: 'DELETE', - params: { - cardId: '@cardId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - isfavorite: { - url: '/api/card/:cardId/favorite', - method: 'GET', - params: { - cardId: '@cardId' - } - }, - favorite: { - url: '/api/card/:cardId/favorite', - method: 'POST', - params: { - cardId: '@cardId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - unfavorite: { - url: '/api/card/:cardId/favorite', - method: 'DELETE', - params: { - cardId: '@cardId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - } - }); -}]); - CardServices.service('VisualizationUtils', [function() { this.visualizationTypes = { scalar: { diff --git a/frontend/src/dashboard/dashboard.module.js b/frontend/src/dashboard/dashboard.module.js index 1f2b6ec3fd8481a0f7a79527fe8c02dcca6d4271..2f543640283a2dae68800079070a0710f27ff7a2 100644 --- a/frontend/src/dashboard/dashboard.module.js +++ b/frontend/src/dashboard/dashboard.module.js @@ -3,7 +3,6 @@ var Dashboard = angular.module('metabase.dashboard', [ 'ngRoute', 'metabase.directives', 'metabase.services', - 'metabase.dashboard.services', 'metabase.dashboard.controllers', 'metabase.card.services' ]); diff --git a/frontend/src/dashboard/dashboard.services.js b/frontend/src/dashboard/dashboard.services.js deleted file mode 100644 index a573847f7eac5bf122c01aeb6f6aae9e17752ac9..0000000000000000000000000000000000000000 --- a/frontend/src/dashboard/dashboard.services.js +++ /dev/null @@ -1,49 +0,0 @@ -// Dashboard Services -var DashboardServices = angular.module('metabase.dashboard.services', ['ngResource', 'ngCookies']); - -DashboardServices.factory('Dashboard', ['$resource', '$cookies', function($resource, $cookies) { - return $resource('/api/dashboard/:dashId', {}, { - list: { - url:'/api/dashboard?org=:orgId&f=:filterMode', - method:'GET', - isArray:true - }, - create: { - url:'/api/dashboard', - method:'POST', - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - }, - get: { - method:'GET', - params:{dashId:'@dashId'}, - }, - update: { - method:'PUT', - params:{dashId:'@id'}, - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - }, - delete: { - method:'DELETE', - params:{dashId:'@dashId'}, - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - }, - addcard: { - url:'/api/dashboard/:dashId/cards', - method:'POST', - params:{dashId:'@dashId'}, - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - }, - removecard: { - url:'/api/dashboard/:dashId/cards', - method:'DELETE', - params:{dashId:'@dashId'}, - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - }, - reposition_cards: { - url:'/api/dashboard/:dashId/reposition', - method:'POST', - params:{dashId:'@dashId'}, - headers: {'X-CSRFToken': function() { return $cookies.csrftoken; }}, - } - }); -}]); diff --git a/frontend/src/metabase/metabase.services.js b/frontend/src/metabase/metabase.services.js deleted file mode 100644 index a63c4b147078e483b3c734ca61cce7add3c8bd8e..0000000000000000000000000000000000000000 --- a/frontend/src/metabase/metabase.services.js +++ /dev/null @@ -1,280 +0,0 @@ -// Metabase Services -var MetabaseServices = angular.module('metabase.metabase.services', [ - 'ngResource', - 'ngCookies', - 'metabase.services' -]); - -MetabaseServices.factory('Metabase', ['$resource', '$cookies', 'MetabaseCore', function($resource, $cookies, MetabaseCore) { - return $resource('/api/meta', {}, { - db_list: { - url: '/api/database/?org=:orgId', - method: 'GET', - isArray: true - }, - db_create: { - url: '/api/database/', - method: 'POST', - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - validate_connection: { - url: '/api/database/validate/', - method: 'POST', - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - db_add_sample_dataset: { - url: '/api/database/sample_dataset', - method: 'POST' - }, - db_get: { - url: '/api/database/:dbId', - method: 'GET', - params: { - dbId: '@dbId' - } - }, - db_update: { - url: '/api/database/:dbId', - method: 'PUT', - params: { - dbId: '@id' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - db_delete: { - url: '/api/database/:dbId', - method: 'DELETE', - params: { - dbId: '@dbId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - db_metadata: { - url: '/api/database/:dbId/metadata', - method: 'GET', - params: { - dbId: '@dbId' - } - }, - db_tables: { - url: '/api/database/:dbId/tables', - method: 'GET', - params: { - dbId: '@dbId' - }, - isArray: true - }, - db_idfields: { - url: '/api/database/:dbId/idfields', - method: 'GET', - params: { - dbId: '@dbId' - }, - isArray: true - }, - db_autocomplete_suggestions: { - url: '/api/database/:dbId/autocomplete_suggestions?prefix=:prefix', - method: 'GET', - params: { - dbId: '@dbId' - }, - isArray: true - }, - db_sync_metadata: { - url: '/api/database/:dbId/sync', - method: 'POST', - params: { - dbId: '@dbId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - table_list: { - url: '/api/table/', - method: 'GET', - params: { - tableId: '@tableId' - }, - isArray: true - }, - table_get: { - url: '/api/table/:tableId', - method: 'GET', - params: { - tableId: '@tableId' - } - }, - table_update: { - url: '/api/table/:tableId', - method: 'PUT', - params: { - tableId: '@id' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - table_fields: { - url: '/api/table/:tableId/fields', - method: 'GET', - params: { - tableId: '@tableId' - }, - isArray: true - }, - table_fks: { - url: '/api/table/:tableId/fks', - method: 'GET', - params: { - tableId: '@tableId' - }, - isArray: true - }, - table_reorder_fields: { - url: '/api/table/:tableId/reorder', - method: 'POST', - params: { - tableId: '@tableId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - }, - }, - table_query_metadata: { - url: '/api/table/:tableId/query_metadata', - method: 'GET', - params: { - dbId: '@tableId' - } - }, - table_sync_metadata: { - url: '/api/table/:tableId/sync', - method: 'POST', - params: { - tableId: '@tableId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - field_get: { - url: '/api/field/:fieldId', - method: 'GET', - params: { - fieldId: '@fieldId' - } - }, - field_summary: { - url: '/api/field/:fieldId/summary', - method: 'GET', - params: { - fieldId: '@fieldId' - }, - isArray: true - }, - field_values: { - url: '/api/field/:fieldId/values', - method: 'GET', - params: { - fieldId: '@fieldId' - } - }, - field_value_map_update: { - url: '/api/field/:fieldId/value_map_update', - method: 'POST', - params: { - fieldId: '@fieldId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - field_update: { - url: '/api/field/:fieldId', - method: 'PUT', - params: { - fieldId: '@id' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - field_foreignkeys: { - url: '/api/field/:fieldId/foreignkeys', - method: 'GET', - params: { - fieldId: '@fieldId' - }, - isArray: true - }, - field_addfk: { - url: '/api/field/:fieldId/foreignkeys', - method: 'POST', - params: { - fieldId: '@fieldId' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - }, - dataset: { - url: '/api/dataset', - method: 'POST', - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - } - } - }); -}]); - - - -MetabaseServices.factory('ForeignKey', ['$resource', '$cookies', function($resource, $cookies) { - return $resource('/api/foreignkey/:fkID', {}, { - delete: { - method: 'DELETE', - params: { - fkID: '@fkID' - }, - headers: { - 'X-CSRFToken': function() { - return $cookies.csrftoken; - } - }, - }, - - }); -}]); diff --git a/frontend/src/services.js b/frontend/src/services.js index 4d8bc5626b7fb8de203dc849666de224985450ba..e96564f3dd8495dd884219ebc6101095da82461f 100644 --- a/frontend/src/services.js +++ b/frontend/src/services.js @@ -259,9 +259,346 @@ MetabaseServices.service('MetabaseCore', ['User', function(User) { }]); -// User Services +// API Services var CoreServices = angular.module('metabase.core.services', ['ngResource', 'ngCookies']); +CoreServices.factory('Activity', ['$resource', '$cookies', function($resource, $cookies) { + return $resource('/api/activity', {}, { + list: { + method: 'GET', + isArray: true + }, + recent_views: { + url: '/api/activity/recent_views', + method: 'GET', + isArray: true + } + }); +}]); + +CoreServices.factory('Card', ['$resource', '$cookies', function($resource, $cookies) { + return $resource('/api/card/:cardId', {}, { + list: { + url: '/api/card/?f=:filterMode', + method: 'GET', + isArray: true + }, + create: { + url: '/api/card', + method: 'POST' + }, + get: { + method: 'GET', + params: { + cardId: '@cardId' + } + }, + update: { + method: 'PUT', + params: { + cardId: '@id' + } + }, + delete: { + method: 'DELETE', + params: { + cardId: '@cardId' + } + }, + isfavorite: { + url: '/api/card/:cardId/favorite', + method: 'GET', + params: { + cardId: '@cardId' + } + }, + favorite: { + url: '/api/card/:cardId/favorite', + method: 'POST', + params: { + cardId: '@cardId' + } + }, + unfavorite: { + url: '/api/card/:cardId/favorite', + method: 'DELETE', + params: { + cardId: '@cardId' + } + } + }); +}]); + +CoreServices.factory('Dashboard', ['$resource', '$cookies', function($resource, $cookies) { + return $resource('/api/dashboard/:dashId', {}, { + list: { + url:'/api/dashboard?org=:orgId&f=:filterMode', + method:'GET', + isArray:true + }, + create: { + url:'/api/dashboard', + method:'POST' + }, + get: { + method:'GET', + params:{dashId:'@dashId'}, + }, + update: { + method:'PUT', + params:{dashId:'@id'} + }, + delete: { + method:'DELETE', + params:{dashId:'@dashId'} + }, + addcard: { + url:'/api/dashboard/:dashId/cards', + method:'POST', + params:{dashId:'@dashId'} + }, + removecard: { + url:'/api/dashboard/:dashId/cards', + method:'DELETE', + params:{dashId:'@dashId'} + }, + reposition_cards: { + url:'/api/dashboard/:dashId/reposition', + method:'POST', + params:{dashId:'@dashId'} + } + }); +}]); + +CoreServices.factory('ForeignKey', ['$resource', '$cookies', function($resource, $cookies) { + return $resource('/api/foreignkey/:fkID', {}, { + delete: { + method: 'DELETE', + params: { + fkID: '@fkID' + } + } + }); +}]); + +CoreServices.factory('Metabase', ['$resource', '$cookies', 'MetabaseCore', function($resource, $cookies, MetabaseCore) { + return $resource('/api/meta', {}, { + db_list: { + url: '/api/database/?org=:orgId', + method: 'GET', + isArray: true + }, + db_create: { + url: '/api/database/', + method: 'POST' + }, + validate_connection: { + url: '/api/database/validate/', + method: 'POST' + }, + db_add_sample_dataset: { + url: '/api/database/sample_dataset', + method: 'POST' + }, + db_get: { + url: '/api/database/:dbId', + method: 'GET', + params: { + dbId: '@dbId' + } + }, + db_update: { + url: '/api/database/:dbId', + method: 'PUT', + params: { + dbId: '@id' + } + }, + db_delete: { + url: '/api/database/:dbId', + method: 'DELETE', + params: { + dbId: '@dbId' + } + }, + db_metadata: { + url: '/api/database/:dbId/metadata', + method: 'GET', + params: { + dbId: '@dbId' + } + }, + db_tables: { + url: '/api/database/:dbId/tables', + method: 'GET', + params: { + dbId: '@dbId' + }, + isArray: true + }, + db_idfields: { + url: '/api/database/:dbId/idfields', + method: 'GET', + params: { + dbId: '@dbId' + }, + isArray: true + }, + db_autocomplete_suggestions: { + url: '/api/database/:dbId/autocomplete_suggestions?prefix=:prefix', + method: 'GET', + params: { + dbId: '@dbId' + }, + isArray: true + }, + db_sync_metadata: { + url: '/api/database/:dbId/sync', + method: 'POST', + params: { + dbId: '@dbId' + } + }, + table_list: { + url: '/api/table/', + method: 'GET', + params: { + tableId: '@tableId' + }, + isArray: true + }, + table_get: { + url: '/api/table/:tableId', + method: 'GET', + params: { + tableId: '@tableId' + } + }, + table_update: { + url: '/api/table/:tableId', + method: 'PUT', + params: { + tableId: '@id' + } + }, + table_fields: { + url: '/api/table/:tableId/fields', + method: 'GET', + params: { + tableId: '@tableId' + }, + isArray: true + }, + table_fks: { + url: '/api/table/:tableId/fks', + method: 'GET', + params: { + tableId: '@tableId' + }, + isArray: true + }, + table_reorder_fields: { + url: '/api/table/:tableId/reorder', + method: 'POST', + params: { + tableId: '@tableId' + } + }, + table_query_metadata: { + url: '/api/table/:tableId/query_metadata', + method: 'GET', + params: { + dbId: '@tableId' + } + }, + table_sync_metadata: { + url: '/api/table/:tableId/sync', + method: 'POST', + params: { + tableId: '@tableId' + } + }, + field_get: { + url: '/api/field/:fieldId', + method: 'GET', + params: { + fieldId: '@fieldId' + } + }, + field_summary: { + url: '/api/field/:fieldId/summary', + method: 'GET', + params: { + fieldId: '@fieldId' + }, + isArray: true + }, + field_values: { + url: '/api/field/:fieldId/values', + method: 'GET', + params: { + fieldId: '@fieldId' + } + }, + field_value_map_update: { + url: '/api/field/:fieldId/value_map_update', + method: 'POST', + params: { + fieldId: '@fieldId' + } + }, + field_update: { + url: '/api/field/:fieldId', + method: 'PUT', + params: { + fieldId: '@id' + } + }, + field_foreignkeys: { + url: '/api/field/:fieldId/foreignkeys', + method: 'GET', + params: { + fieldId: '@fieldId' + }, + isArray: true + }, + field_addfk: { + url: '/api/field/:fieldId/foreignkeys', + method: 'POST', + params: { + fieldId: '@fieldId' + } + }, + dataset: { + url: '/api/dataset', + method: 'POST' + } + }); +}]); + +CoreServices.factory('Revision', ['$resource', function($resource) { + return $resource('/api/revision', {}, { + list: { + url: '/api/revision', + method: 'GET', + isArray: true, + params: { + 'entity': '@entity', + 'id': '@id' + } + }, + revert: { + url: '/api/revision/revert', + method: 'POST', + params: { + 'entity': '@entity', + 'id': '@id', + 'revision_id': '@revision_id' + } + } + }); +}]); + CoreServices.factory('Session', ['$resource', '$cookies', function($resource, $cookies) { return $resource('/api/session/', {}, { create: { @@ -290,6 +627,43 @@ CoreServices.factory('Session', ['$resource', '$cookies', function($resource, $c }); }]); +CoreServices.factory('Settings', ['$resource', function($resource) { + return $resource('/api/setting', {}, { + list: { + url: '/api/setting', + method: 'GET', + isArray: true, + }, + // POST endpoint handles create + update in this case + put: { + url: '/api/setting/:key', + method: 'PUT', + params: { + key: '@key' + } + }, + delete: { + url: '/api/setting/:key', + method: 'DELETE', + params: { + key: '@key' + } + } + }); +}]); + +CoreServices.factory('Setup', ['$resource', '$cookies', function($resource, $cookies) { + return $resource('/api/setup/', {}, { + create: { + method: 'POST' + }, + validate_db: { + url: '/api/setup/validate', + method: 'POST' + } + }); +}]); + CoreServices.factory('User', ['$resource', '$cookies', function($resource, $cookies) { return $resource('/api/user/:userId', {}, { create: { @@ -343,57 +717,6 @@ CoreServices.factory('User', ['$resource', '$cookies', function($resource, $cook }); }]); -CoreServices.factory('Settings', ['$resource', function($resource) { - return $resource('/api/setting', {}, { - list: { - url: '/api/setting', - method: 'GET', - isArray: true, - }, - - // POST endpoint handles create + update in this case - put: { - url: '/api/setting/:key', - method: 'PUT', - params: { - key: '@key' - } - }, - - delete: { - url: '/api/setting/:key', - method: 'DELETE', - params: { - key: '@key' - } - } - }); -}]); - -CoreServices.factory('Revision', ['$resource', function($resource) { - return $resource('/api/revision', {}, { - list: { - url: '/api/revision', - method: 'GET', - isArray: true, - params: { - 'entity': '@entity', - 'id': '@id' - } - }, - - revert: { - url: '/api/revision/revert', - method: 'POST', - params: { - 'entity': '@entity', - 'id': '@id', - 'revision_id': '@revision_id' - } - } - }); -}]); - CoreServices.factory('Util', ['$resource', '$cookies', function($resource, $cookies) { return $resource('/api/util/', {}, { password_check: { diff --git a/frontend/src/setup/setup.controllers.js b/frontend/src/setup/setup.controllers.js index d3e68ff42ac1d3ac276a862bdb9b708fb03a38b1..f1e5a4dde42a59222bceeaa3a0d3c42443be1a35 100644 --- a/frontend/src/setup/setup.controllers.js +++ b/frontend/src/setup/setup.controllers.js @@ -16,7 +16,7 @@ const finalCreateStore = compose( const reducer = combineReducers(reducers); -var SetupControllers = angular.module('metabase.setup.controllers', ['metabase.setup.services']); +var SetupControllers = angular.module('metabase.setup.controllers', ['metabase.services']); SetupControllers.controller('SetupController', ['$scope', '$location', '$timeout', 'ipCookie', function($scope, $location, $timeout, ipCookie) { $scope.Component = SetupApp; $scope.props = { diff --git a/frontend/src/setup/setup.services.js b/frontend/src/setup/setup.services.js deleted file mode 100644 index d5e5297614f63061841ea1f978da5c99cbe456f8..0000000000000000000000000000000000000000 --- a/frontend/src/setup/setup.services.js +++ /dev/null @@ -1,15 +0,0 @@ -var SetupServices = angular.module('metabase.setup.services', ['ngResource', 'ngCookies']); - -SetupServices.factory('Setup', ['$resource', '$cookies', function($resource, $cookies) { - return $resource('/api/setup/', {}, { - create: { - method: 'POST' - }, - - validate_db: { - url: '/api/setup/validate', - method: 'POST' - } - }); -}]); - diff --git a/frontend/test/unit/services.spec.js b/frontend/test/unit/services.spec.js index 940edfdd053cfcf82adefaec9ff75aaecb5b6201..a62fbb60749b120022a044140259d4d80cbb3dc8 100644 --- a/frontend/test/unit/services.spec.js +++ b/frontend/test/unit/services.spec.js @@ -1,8 +1,7 @@ import 'metabase/services'; -import 'metabase/metabase/metabase.services'; -describe('metabase.metabase.services', function() { - beforeEach(angular.mock.module('metabase.metabase.services')); +describe('metabase.services', function() { + beforeEach(angular.mock.module('metabase.services')); describe('Metabase', function() { it('should return empty list of databases', inject(function(Metabase, $httpBackend) {