Skip to content
Snippets Groups Projects
Commit 78c8f745 authored by Allen Gilliland's avatar Allen Gilliland
Browse files

consolidate all of the angular API service code into the main services.js...

consolidate all of the angular API service code into the main services.js file.  we were mostly going this route already, but this just makes it simple and puts all the api code in a single place.
parent 09775d52
No related branches found
No related tags found
No related merge requests found
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
}
});
}]);
......@@ -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) {
......
......@@ -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',
......
......@@ -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: {
......
......@@ -3,7 +3,6 @@ var Dashboard = angular.module('metabase.dashboard', [
'ngRoute',
'metabase.directives',
'metabase.services',
'metabase.dashboard.services',
'metabase.dashboard.controllers',
'metabase.card.services'
]);
......
// 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; }},
}
});
}]);
// 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;
}
},
},
});
}]);
......@@ -259,9 +259,443 @@ 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',
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;
}
}
}
});
}]);
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',
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; }},
}
});
}]);
CoreServices.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;
}
},
},
});
}]);
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',
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;
}
}
}
});
}]);
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 +724,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 +814,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: {
......
......@@ -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 = {
......
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'
}
});
}]);
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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment