• R/O
  • HTTP
  • SSH
  • HTTPS

zephyr: Commit

This repository is for zephyr, which is implemented for a GUI of Eos.


Commit MetaInfo

Revisionf97111c5311ad4bc8f1202b8d35ed1d6d5f54274 (tree)
Time2016-01-27 03:56:51
Authorhimetani_cafe <fumifumi@yasu...>
Commiterhimetani_cafe

Log Message

[Develop and Test] db.getFiles
/**

  • getFiles
  • ディレクトリのfileIdを取得する
  • @param {string} fileId
  • ディレクトリのfileId
  • @returns {promise}
  • resolve([Array]<string>fileId)
  • 引数で与えられたディレクトリを直接の親に持つファイルのレコードの配列を返す。
    */

new file: server/api/v1/workspace/index.js
modified: server/class/DB.js
modified: server/routes.js
modified: test/mocha/DB.test.js

Change Summary

Incremental Difference

--- /dev/null
+++ b/server/api/v1/workspace/index.js
@@ -0,0 +1,18 @@
1+'use strict';
2+
3+var express = require('express');
4+var router = express.Router()
5+var path = require('path')
6+var formidable = require('formidable')
7+var db = require(__dirname + '/../../../../server/class/DB').instance;
8+
9+router.get('/:fileId?', function(req, res) {
10+ var fileId = req.param('fileId');
11+ if(!fileId || fileId === '1f83f620-c1ed-11e5-9657-7942989daa00') {
12+ res.send('root');
13+ } else {
14+ res.send('not root');
15+ }
16+});
17+
18+module.exports = router;
--- a/server/class/DB.js
+++ b/server/class/DB.js
@@ -22,6 +22,7 @@ var Files; // Model object of sequelize
2222 getDirectoryParentId: getDirectoryParentId,
2323 getDirectoryId: getDirectoryId,
2424 getDirectory: getDirectory,
25+ getFiles: getFiles,
2526 existFile: existFile,
2627 notExistFile: notExistFile,
2728 existDirectory: existDirectory,
@@ -230,6 +231,36 @@ function getDirectory(name) {
230231 }
231232
232233 /**
234+ * getFiles
235+ * ディレクトリのfileIdを取得する
236+ * @param {string} fileId ディレクトリのfileId
237+ * @returns {promise} resolve([Array]<string>fileId) 引数で与えられたディレクトリを直接の親に持つファイルのレコードの配列を返す。
238+ * 与えられたfileIdがディレクトリでなければresolve
239+ */
240+function getFiles(fileId) {
241+ return new Promise(function(resolve, reject) {
242+ if(!fileId) {
243+ reject(new Error('"'+fileId+'" is invalid.'));
244+ }
245+ var q = {
246+ where: {
247+ parentId: fileId
248+ }
249+ };
250+ Files.findAll(q)
251+ .then(function(r) {
252+ console.log(r);
253+ if(r.length === 0) {
254+ reject(new Error('"'+fileId+'" is invalid.'));
255+ }
256+ var fileIds = r.map(function(data) { return data.fileId; });
257+ console.log(fileIds);
258+ resolve(fileIds);
259+ });
260+ });
261+}
262+
263+/**
233264 * existFile
234265 * 同一ディレクトリに同名のファイルが存在することを確かめる
235266 * @param {string} fileName
@@ -549,7 +580,7 @@ function test1() {
549580
550581 function test2() {
551582 var q1 = {
552- fileId: uuid.v1(),
583+ fileId: '1f83f620-c1ed-11e5-9657-7942989daa04',
553584 name: 'one',
554585 parentId: '1f83f620-c1ed-11e5-9657-7942989daa00', // rootのuuid
555586 fileType: 0 //directory
@@ -557,7 +588,7 @@ function test2() {
557588 return Files.create(q1)
558589 .then(function() {
559590 var q2 = {
560- fileId: uuid.v1(),
591+ fileId: '1f83f620-c1ed-11e5-9657-7942989daa01',
561592 name: 'two',
562593 parentId: q1.fileId,
563594 fileType: 0
@@ -567,7 +598,7 @@ function test2() {
567598 })
568599 .then(function(r) {
569600 var q3 = {
570- fileId: uuid.v1(),
601+ fileId: '1f83f620-c1ed-11e5-9657-7942989daa02',
571602 name: 'two',
572603 parentId: '1f83f620-c1ed-11e5-9657-7942989daa00', //rootのuuid
573604 fileType: 0
@@ -576,7 +607,7 @@ function test2() {
576607 })
577608 .then(function() {
578609 var q4 = {
579- fileId: uuid.v1(),
610+ fileId:'1f83f620-c1ed-11e5-9657-7942989daa03',
580611 name: 'hogehoge.txt',
581612 parentId: q1.fileId,
582613 fileType: 1
--- a/server/routes.js
+++ b/server/routes.js
@@ -19,6 +19,7 @@ module.exports = function(app) {
1919 */
2020 app.use('/api/v1/fileUpload', require(__dirname + '/api/v1/fileUpload'));
2121 app.use('/api/v1/execution', require(__dirname + '/api/v1/execution'));
22+ app.use('/api/v1/workspace', require(__dirname + '/api/v1/workspace'));
2223
2324 app.route('/*')
2425 .get(function(req, res) {
--- a/test/mocha/DB.test.js
+++ b/test/mocha/DB.test.js
@@ -357,5 +357,35 @@
357357 return db.createDirectory().should.be.rejectedWith(Error, 'directory name should start "/" so that it is absolute path including root.');
358358 });
359359 });
360+
361+ var getFiles = `
362+ /**
363+ * getFiles
364+ * ディレクトリのfileIdを取得する
365+ * @param {string} fileId ディレクトリのfileId
366+ * @returns {promise} resolve([Array]<string>fileId) 引数で与えられたディレクトリを直接の親に持つファイルのレコードの配列を返す。
367+ */
368+ `;
369+ describe(createDirectory, function() {
370+ before(function() {
371+ return db.init()
372+ .then(function() {
373+ return db.test1();
374+ })
375+ .then(function() {
376+ return db.test2();
377+ });
378+ });
379+
380+ it('should be rejected when calling with invalid fileId', function() {
381+ return db.getFiles('').should.be.rejected;
382+ });
383+ it('should be resolved(1)', function() {
384+ return expect(db.getFiles('1f83f620-c1ed-11e5-9657-7942989daa00')).to.eventually.be.an('array');
385+ });
386+ it('should be resolved(2)', function() {
387+ return expect(db.getFiles('1f83f620-c1ed-11e5-9657-7942989daa04')).to.eventually.be.length(2);
388+ });
389+ });
360390 });
361391 })();
Show on old repository browser