var fs = require('fs');
var Sequelize = require('sequelize');
var co = require('co');
+ var uuid = require('node-uuid');
var sequelize;
var test = 'hello';
dialect: 'sqlite'
};
+ /**
+ * sync
+ *
+ * @returns {promise}<DBオブジェクトの関数群のオブジェクトをresolveする>
+ */
function sync() {
return new Promise(function(resolve) {
- Promise.all([Directory.sync(), File.sync()])
+ Files.sync()
.then(function() {
var root = {
- name: 'root',
- parent: ''
+ fileId: uuid.v1(),
+ name: '/',
+ parentDirectory: '',
+ fileType: 0
};
- return Directory.create(root);
+ return Files.create(root);
})
.then(function() {
var c = {
sayHello: function() {
return test;
- }
+ },
+ createFile: createFile
+ /*
+ removeFile: removeFile,
+ createDirectory: createDirectory,
+ removeDirectory: removeDirectory,
+ getFilename: getFilename,
+ moveFile: moveFile,
+ moveDirectory: moveDirectory
+ */
};
resolve(c);
});
});
}
+ /**
+ * createFile
+ *
+ * @param name
+ * @param directory
+ * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする>
+ */
+ function createFile(fileName,parentDirectory) {
+ return new Promise(function(resolve) {
+ var q = {
+ fileId: uuid.v1(),
+ name: fileName,
+ parentDirectory: parentDirectory,
+ fileType: 0
+ }
+ Files.create(q)
+ .then(function(r) {
+ resolve(r);
+ });
+ });
+ }
+
+ /**
+ *
+ * @constructor
+ * @returns {promise}
+ */
if(process.env['NODE_ENV'] === 'production') {
var dbPath = __dirname + '/../../user-specific-files/db/db.workspace';
dbOption.storage = dbPath;
sequelize = new Sequelize('','','', dbOption);
- var File = sequelize.define('file', {
+ var Files = sequelize.define('file', {
fileId: {
type: Sequelize.UUID,
field: 'file_id',
field: 'name',
allowNull: false
},
- directoryName: {
+ parentDirectory: {
type: Sequelize.STRING,
- field: 'directory_name',
+ field: 'parent_directory',
allowNull: false
- }
- });
-
- var Directory = sequelize.define('directory', {
- name: {
- type: Sequelize.STRING,
- field: 'name',
- primaryKey: true
},
- parent: {
- type: Sequelize.STRING,
- field: 'parent',
+ fileType: {
+ type: Sequelize.ENUM(0,1),
+ field: 'file_type',
allowNull: false
}
});
- Directory.hasMany(File, {foreignKey: 'directoryName'});
- File.belongsTo(Directory, {foreignKey: 'name'});
-
return sync();
}
(function() {
'use strict';
var DB = require('../../server/class/DB');
- var expect = require('chai').expect;
+ var chai = require('chai');
+ var chaiAsPromised = require('chai-as-promised');
+ chai.use(chaiAsPromised);
+ var expect = chai.expect;
+ var should = chai.should;
//process.env['NODE_ENV'] = 'production';
- var db;
- before(function() {
- return DB()
- .then(function(r) {
- db = r;
- });
- });
+
+ var constructor = `
+ /**
+ * createFile
+ *
+ * @param name
+ * @param directory
+ * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする>
+ */
+ `;
+
+ var createFile = `
+ /**
+ * createFile
+ *
+ * @param name
+ * @param directory
+ * @returns {promise}<保存したファイルのファイル名(uuid)をresolveする>
+ */
+ `;
describe('DB クラス', function() {
- it('test of test', function() {
- expect(db.sayHello()).to.equal('hello');
+ var db;
+ before(function() {
+ return DB()
+ .then(function(r) {
+ db = r;
+ });
+ });
+
+ describe(constructor, function() {
+ it('should return hello when call sayHello', function() {
+ expect(db.sayHello()).to.equal('hello');
+ });
+ });
+ describe(createFile, function() {
+ it('should return object which have proverty "dataValues"', function() {
+ return expect(db.createFile('hage.txt','root')).to.eventually.have.property('dataValues');
+ });
});
});
})();