7cb2dab878a45cb6aeddec5ade1af05ea5d64576
[motion.git] / server / models / analytics_default_report.js
1 'use strict';
2
3 module.exports = function(sequelize, DataTypes) {
4
5   var DefaultReport = sequelize.define('DefaultReport', {
6     name: DataTypes.STRING,
7     description: DataTypes.STRING,
8     parent: DataTypes.STRING,
9     table: DataTypes.STRING,
10     conditions: DataTypes.TEXT
11   }, {
12     tableName: 'analytics_default_reports',
13     associate: function(models) {
14       DefaultReport.hasMany(models.ReportField, {
15         as: 'Fields',
16         onDelete: 'cascade',
17         hooks: true
18       });
19       DefaultReport.addScope('fields', {
20         include: [{
21           model: models.ReportField,
22           as: 'Fields',
23           required: false,
24           attributes: ['field', 'alias', 'function', 'groupBy', 'orderBy', 'DefaultMetricId', 'format', 'custom'],
25         }]
26       });
27
28       DefaultReport.addScope('exportFields', function(query) {
29         return {
30           include: [{
31             model: models.ReportField,
32             as: 'Fields',
33             required: false,
34             attributes: ['field', 'alias', 'function', 'groupBy', 'orderBy', 'DefaultMetricId', 'format', 'custom'],
35             include: [{
36               model: models.DefaultMetric,
37               attributes: ['description', 'metric', 'name', 'table'],
38               required: false,
39               include: [{
40                 model: models.ReportField,
41                 as: 'ReportFields',
42                 attributes: ['field', 'alias', 'function', 'groupBy', 'orderBy', 'format'],
43                 required: false,
44                 where: query
45               }],
46             }]
47           }]
48         };
49       });
50     }
51   });
52
53   return DefaultReport;
54 };