YUKI Hiroshi
null+****@clear*****
Fri Dec 7 12:51:39 JST 2012
YUKI Hiroshi 2012-12-07 12:51:39 +0900 (Fri, 07 Dec 2012) New Revision: d15217a6e0afaf4551119fef419ee9f39fa65f41 https://github.com/groonga/gcs/commit/d15217a6e0afaf4551119fef419ee9f39fa65f41 Log: Add storage implementation Added files: lib/database/storage.js lib/rm.js Modified files: lib/database/domain.js test/test-utils.js Modified: lib/database/domain.js (+1 -0) =================================================================== --- lib/database/domain.js 2012-12-06 19:47:07 +0900 (04543bd) +++ lib/database/domain.js 2012-12-07 12:51:39 +0900 (905b653) @@ -11,6 +11,7 @@ var nroonga = require('../wrapped-nroonga'); var ValidationError = require('../errors').ValidationError; var MultiplexedValidationError = require('../errors').MultiplexedValidationError; var IndexField = require('./index-field').IndexField; +var Storage = require('./storage').Storage; var MINIMUM_NAME_LENGTH = exports.MINIMUM_NAME_LENGTH = Added: lib/database/storage.js (+56 -0) 100644 =================================================================== --- /dev/null +++ lib/database/storage.js 2012-12-07 12:51:39 +0900 (4a5a889) @@ -0,0 +1,56 @@ +// -*- indent-tabs-mode: nil; js2-basic-offset: 2 -*- + +var fs = require('fs'); +var path = require('path'); +var mkdirp = require('mkdirp'); +var rm = require('../rm'); + +function Storage(args) { + this.initialize(args); +} +Storage.prototype = { + initialize: function(args) { + this.name = args.name; + this.basePath = args.basePath; + }, + + get directoryPath() { + if (!this._directoryPath) { + this._directoryPath = paht.join(this.basePath, this.name); + } + return this._directoryPath; + }, + + saveSync: function(document) { + if (!this.directoryExistsSync()) + mkdirp.sync(databaseDirectory); + + // logic to save JSON as a file + }, + + readSync: function(id) { + if (!this.directoryExistsSync()) + return null; + + // logic to read file + // return parsed JSON + }, + + deleteSync: function(id) { + if (!this.directoryExistsSync()) + return; + + // logic to delete file + }, + + clearSync: function() { + if (this.directoryExistsSync()) + rm.rmRSync(this.directoryPath); + }, + + directoryExistsSync: function() { + return path.existsSync(this.directoryPath); + } +}; + +exports.Storage = Storage; Added: lib/rm.js (+19 -0) 100644 =================================================================== --- /dev/null +++ lib/rm.js 2012-12-07 12:51:39 +0900 (125aa68) @@ -0,0 +1,19 @@ +var fs = require('fs'); +var path = require('path'); + +function rmRSync(directoryPath) { + if (!path.existsSync(directoryPath)) return; + + var files = fs.readdirSync(directoryPath); + var file, filePath; + for (var i = 0, maxi = files.length; i < maxi; i++) { + file = files[i]; + filePath = path.join(directoryPath, file); + if (isDirectory(filePath)) + rmRSync(filePath); + else + fs.unlinkSync(filePath); + } + fs.rmdirSync(directoryPath); +} +exports.rmRSync = rmRSync; Modified: test/test-utils.js (+2 -16) =================================================================== --- test/test-utils.js 2012-12-06 19:47:07 +0900 (2e272e5) +++ test/test-utils.js 2012-12-07 12:51:39 +0900 (1a98b62) @@ -6,6 +6,7 @@ var http = require('http'); var Deferred = require('jsdeferred').Deferred; var nativeNroonga = require('nroonga'); var wrappedNroonga = require(__dirname + '/../lib/wrapped-nroonga'); +var rm = require(__dirname + '/../lib/rm'); var xml2js = require('xml2js'); var spawn = require('child_process').spawn; var url = require('url'); @@ -133,22 +134,7 @@ function isDirectory(path) { } exports.isDirectory = isDirectory; -function rmRSync(directoryPath) { - if (!path.existsSync(directoryPath)) return; - - var files = fs.readdirSync(directoryPath); - var file, filePath; - for (var i = 0, maxi = files.length; i < maxi; i++) { - file = files[i]; - filePath = path.join(directoryPath, file); - if (isDirectory(filePath)) - rmRSync(filePath); - else - fs.unlinkSync(filePath); - } - fs.rmdirSync(directoryPath); -} -exports.rmRSync = rmRSync; +exports.rmRSync = rm.rmRSync; function XMLStringToJSON(xml) { var xml2js = require('xml2js'); -------------- next part -------------- HTML����������������������������... Download