UNPKG

simple-breakpad-server

Version:
79 lines (60 loc) 1.82 kB
(function() { var Crashreport, Sequelize, cache, config, customFields, field, fs, i, j, len, len1, minidump, options, path, ref, ref1, schema, sequelize, symbolsPath, tmp; config = require('../config'); path = require('path'); fs = require('fs-promise'); cache = require('./cache'); minidump = require('minidump'); Sequelize = require('sequelize'); sequelize = require('./db'); tmp = require('tmp'); symbolsPath = config.getSymbolsPath(); customFields = config.get('customFields') || {}; schema = { id: { type: Sequelize.INTEGER, autoIncrement: true, primaryKey: true }, product: Sequelize.STRING, version: Sequelize.STRING }; options = { indexes: [ { fields: ['created_at'] } ] }; ref = customFields.params; for (i = 0, len = ref.length; i < len; i++) { field = ref[i]; schema[field.name] = Sequelize.STRING; } ref1 = customFields.files; for (j = 0, len1 = ref1.length; j < len1; j++) { field = ref1[j]; schema[field.name] = Sequelize.BLOB; } Crashreport = sequelize.define('crashreports', schema, options); Crashreport.getStackTrace = function(record, callback) { var tmpfile; if (cache.has(record.id)) { return callback(null, cache.get(record.id)); } tmpfile = tmp.fileSync(); return fs.writeFile(tmpfile.name, record.upload_file_minidump).then(function() { return minidump.walkStack(tmpfile.name, [symbolsPath], function(err, report) { tmpfile.removeCallback(); if (err == null) { cache.set(record.id, report); } return callback(err, report); }); })["catch"](function(err) { tmpfile.removeCallback(); return callback(err); }); }; module.exports = Crashreport; }).call(this);