9 var fs = require('fs');
10 var Sequelize = require('sequelize');
11 var co = require('co');
12 var uuid = require('node-uuid');
24 * @returns {promise}<DBオブジェクトの関数群のオブジェクトをresolveする>
27 return new Promise(function(resolve) {
36 return Files.create(root);
40 sayHello: function() {
44 notExistFile: notExistFile,
45 existDirectory: existDirectory,
46 notExistDirectory: notExistDirectory,
47 createFile: createFile,
49 removeFile: removeFile
51 createDirectory: createDirectory,
52 removeDirectory: removeDirectory,
53 getFilename: getFilename,
55 moveDirectory: moveDirectory
67 * @param parentDirectory
68 * @returns {promise}<sequelize.createの結果を格納したobject | Error>
70 function createFile(fileName,parentDirectory) {
71 return new Promise(function(resolve, reject) {
72 Promise.all([notExistFile(fileName, parentDirectory), existDirectory(parentDirectory)])
73 .catch(function(error) {
80 parentDirectory: parentDirectory,
83 return Files.create(q)
86 resolve(r.dataValues.fileId);
94 * 同一ディレクトリに同名のファイルが存在することを確かめる
95 * @param {string}fileName
96 * @param {string}parentDirectory
97 * @returns {promise} ファイルが存在すればresolve、存在しなければreject
99 function existFile(fileName, parentDirectory) {
100 return new Promise(function(resolve, reject) {
104 parentDirectory: parentDirectory,
112 reject(new Error("\"" + fileName + "\" does not exist in " + '"' + parentDirectory + "\" directory."));
123 * 同一ディレクトリに同名のファイルが存在していないことを確かめる
124 * @param {string}fileName
125 * @param {string}parentDirectory
126 * @returns {promise} ファイルが存在しなければresolve、存在すればreject
128 function notExistFile(fileName, parentDirectory) {
129 return new Promise(function(resolve, reject) {
133 parentDirectory: parentDirectory,
142 reject(new Error("\"" + fileName + "\" has already existed in " + '"' + parentDirectory + "\" directory."));
151 * @param {string} directory
152 * @returns {promise} ディレクトリが存在すればresolve、存在しなければreject
154 function existDirectory(directory) {
155 return new Promise(function(resolve, reject) {
165 reject(new Error('"' + directory + '" directory doesn\'t exist.'));
176 * ディレクトリが存在しないことを確認する
177 * @param {string} directory
178 * @returns {promise} ディレクトリが存在しなければresolve、存在すればreject
180 function notExistDirectory(directory) {
181 return new Promise(function(resolve, reject) {
193 reject(new Error('"' + directory + '" directory exists.'));
203 * @param {string} fileName
204 * @param {string} parentDirectory
205 * @returns {promise} ファイル削除に成功すればresolve、失敗すればreject
207 function removeFile(fileName, parentDirectory) {
208 return new Promise(function(resolve, reject) {
212 parentDirectory: parentDirectory
225 * test用にデータベースのレコードを追加する関数
232 parentDirectory: '/',
235 return Files.create(q);
243 if(process.env['NODE_ENV'] === 'production') {
244 var dbPath = __dirname + '/../../user-specific-files/db/db.workspace';
245 dbOption.storage = dbPath;
247 // if doesn't exist workspace.db, create.
249 fs.accessSync(dbPath, fs.R_OK | fs.W_OK);
251 fs.writeFileSync(dbPath, '');
255 sequelize = new Sequelize('','','', dbOption);
257 var Files = sequelize.define('file', {
259 type: Sequelize.UUID,
264 type: Sequelize.STRING,
269 type: Sequelize.STRING,
270 field: 'parent_directory',
274 type: Sequelize.ENUM(0,1),