mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-06 20:55:30 +02:00
* New message_area.js for Message Area APIs, etc.
* msg_area_list.js module for listing/selecting message area (WIP; much to do)
This commit is contained in:
parent
990dffe880
commit
aa820ac0b5
5 changed files with 163 additions and 0 deletions
61
core/message_area.js
Normal file
61
core/message_area.js
Normal file
|
@ -0,0 +1,61 @@
|
|||
/* jslint node: true */
|
||||
'use strict';
|
||||
|
||||
var msgDb = require('./database.js').dbs.message;
|
||||
|
||||
var async = require('async');
|
||||
var _ = require('lodash');
|
||||
var assert = require('assert');
|
||||
|
||||
exports.getAvailableMessageAreas = getAvailableMessageAreas;
|
||||
|
||||
function getAvailableMessageAreas(cb) {
|
||||
var areas = []; // { areaId, name, groupIds[] }
|
||||
|
||||
async.series(
|
||||
[
|
||||
function getAreas(callback) {
|
||||
msgDb.all(
|
||||
'SELECT area_id, area_name ' +
|
||||
'FROM message_area;',
|
||||
function areaResults(err, areaRows) {
|
||||
if(err) {
|
||||
callback(err);
|
||||
} else {
|
||||
areaRows.forEach(function entry(ar) {
|
||||
areas.push( {
|
||||
areaId : ar.area_id,
|
||||
name : ar.area_name,
|
||||
});
|
||||
});
|
||||
|
||||
callback(null);
|
||||
}
|
||||
}
|
||||
);
|
||||
},
|
||||
function getAreaGroups(callback) {
|
||||
var query = msgDb.prepare(
|
||||
'SELECT group_id ' +
|
||||
'FROM message_area_group ' +
|
||||
'WHERE area_id=?;');
|
||||
|
||||
async.each(areas, function area(a, next) {
|
||||
query.all( [ a.areaId ], function groupRows(err, groups) {
|
||||
a.groupIds = groups;
|
||||
next(err);
|
||||
});
|
||||
},
|
||||
function complete(err) {
|
||||
query.finalize(function finalized(err2) {
|
||||
callback(err); // use orig err
|
||||
});
|
||||
});
|
||||
}
|
||||
],
|
||||
function complete(err) {
|
||||
cb(err, areas);
|
||||
}
|
||||
);
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue