all repos — litestore @ 55d0737c2bbdefba2f534fc45ce8b5feedd410a3

A minimalist nosql document store.

Enabled Porter tokenizer; other minor changes.
h3rald h3rald@h3rald.com
Sat, 18 Apr 2015 13:41:31 +0200
commit

55d0737c2bbdefba2f534fc45ce8b5feedd410a3

parent

90df57daea85ca8eab2735f911f73ea25dc33012

M admin/index.htmladmin/index.html

@@ -4,7 +4,7 @@ <head>

<meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> - <title>LiteStore</title> + <title>LiteStore Admin</title> <link rel="stylesheet" href="styles/litestore.css"> <link rel="icon" type="image/x-icon" href="favicon.ico" /> </head>
M admin/js/components/navbar.jsadmin/js/components/navbar.js

@@ -58,7 +58,7 @@ m("span.icon-bar"),

m("span.icon-bar"), m("span.icon-bar") ]), - m("a.navbar-brand", {href: "/", config:m.route}, "LiteStore") + m("a.navbar-brand", {href: "/", config:m.route}, "LiteStore Admin") ]); } };
M admin/md/overview.mdadmin/md/overview.md

@@ -1,8 +1,8 @@

## Overview -LiteStore is a lightweight, self-contained, RESTful, multi-format document store server written in [Nim](http://www.nim-lang.org). It aims to be a very simple and lightweight backend ideal for prototyping and testing REST APIs and single-page applications. +LiteStore is a lightweight, self-contained, RESTful, multi-format NoSQL document store server written in [Nim](http://www.nim-lang.org) and powered by a [SQLite](http://www.sqlite.org) backend for storage. It aims to be a very simple and lightweight backend ideal for prototyping and testing REST APIs and single-page applications. -### Rationale +### Rationale If you ever wanted to build a simple single-page application in your favorite framework, just to try something out or as a prototype, you inevitably had to answer the question _"What backend should I use?"_

@@ -11,7 +11,7 @@

LiteStore aims to solve this problem. When you use LiteStore as the backend for your app, you only need to take _two files_ with you, at all times: * The [litestore](class:cmd) executable file for your platform of choice (that's about 2MB in size) -* A datastore file +* A data store file And yes, you can even store the code of your client-side application inside the datastore itself, along with your application data.

@@ -19,16 +19,26 @@ ### Key Features

Despite being fairly small and self-contained, LiteStore comes with many useful features that are essential for many use cases. -#### Multiformat documents +#### [](class:fa-file-text-o) Multi-format Documents -LiteStore can be used to store documents in virtually any format +LiteStore can be used to store documents in virtually any format, as long as you specify an appropriate content type for them. Textual documents are stored as-is, while binary documents are base64-encoded (not the best thing in the world, but definitely the easiest and most portal option). -#### Document Tagging +#### [](class:fa-tags) Document Tagging -#### Full-text Search +You can add custom tags to documents to easily categorize them and retrieve them. Some system tags are also added automatically to identify the document content type, format and collection. -#### RESTful HTTP API +#### [](class:fa-search) Full-text Search -#### Directory Bulk Import/Export +By leveraging [SQLite FTS4 extension](http://www.sqlite.org/fts3.html) and implementing an enhanced algorithm for result rankings, LiteStore provides full-text search for all textual documents out-of-the-box. + +#### [](class:fa-gears) RESTful HTTP API + +Every operation can be performed on the data store using a simple but powerful RESTful HTTP API, perfect for client-side, single-page applications. + +#### [](class:fa-exchange) Directory Bulk Import/Export + +To make serving a single-page application _from LiteStore_ even easier and faster, you can automatically import (and export) the contents of a directory recursively. + +#### [](class:fa-cloud-upload) Directory Mounting and Mirroring -#### Directory Mounting and Mirroring+After importing the contents of a directory into a LiteStore data store, you can _mount it_ on LiteStore and mirror all data store changes to the filesystem. Incidentally, that's how most of the LiteStore Admin test app was built [](class:fa-smile-o).
M admin/md/use-cases.mdadmin/md/use-cases.md

@@ -1,9 +1,11 @@

### Use Cases -#### SPA prototyping backend +#### Lightweight Document Store -#### Personal Wiki/CMS backend +#### SPA Prototyping Backend -#### Static site backend +#### Personal Wiki/CMS Backend + +#### Static Site Backend -#### Lightweight file server+#### Lightweight File Server
M lib/queries.nimlib/queries.nim

@@ -17,7 +17,8 @@

const SQL_CREATE_SEARCHCONTENTS_TABLE* = sql""" CREATE VIRTUAL TABLE searchcontents USING fts4( document_id TEXT, -content TEXT) +content TEXT, +tokenize=porter) """ const SQL_CREATE_TAGS_TABLE* = sql"""
M run_adminrun_admin

@@ -1,2 +1,2 @@

#!/usr/bin/env bash -./litestore --mount:admin -l:debug +./litestore --mount:admin -l:info