[Groonga-commit] groonga/gcs [master] Add storage implementation

Zurück zum Archiv-Index

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 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index