dalton 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +19 -0
- data/.jrubyrc +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +8 -0
- data/Jarfile +7 -0
- data/README.md +35 -0
- data/Rakefile +7 -0
- data/dalton.gemspec +23 -0
- data/epl-v10.html +261 -0
- data/examples/posts_controller.rb +48 -0
- data/lib/dalton.rb +37 -0
- data/lib/dalton/attribute.rb +16 -0
- data/lib/dalton/connection.rb +104 -0
- data/lib/dalton/database.rb +48 -0
- data/lib/dalton/datomization.rb +18 -0
- data/lib/dalton/entity.rb +75 -0
- data/lib/dalton/exception.rb +68 -0
- data/lib/dalton/transaction_result.rb +33 -0
- data/lib/dalton/translation.rb +65 -0
- data/lib/dalton/undatomization.rb +11 -0
- data/lib/dalton/utility.rb +91 -0
- data/lib/dalton/version.rb +3 -0
- data/spec/dalton/connection_spec.rb +133 -0
- data/spec/dalton/database_spec.rb +85 -0
- data/spec/dalton/datomization_spec.rb +94 -0
- data/spec/dalton/entity_spec.rb +37 -0
- data/spec/dalton/translation_spec.rb +126 -0
- data/spec/dalton/utility_spec.rb +37 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/clojure_equal_matcher.rb +52 -0
- data/spec/support/datomic_context.rb +19 -0
- metadata +101 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: fd9ac2d6eb314a14d3cc4df36671a2d0ef140270
|
4
|
+
data.tar.gz: c1ef18468641f9b49a43dbaeea81175981d3d202
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 22456dbd587f86774cacd156bb68c3d99507a4c70fc42c066fc9b7c81c66dc647cdf12e23627fc6abebf933e9e4aa0ba5519a1cb1747b132c2255160d736c24a
|
7
|
+
data.tar.gz: 5c7356ed6db3aa851dd0e315e4e4fee0e1d3aad1cf712528e76e03d2b4ca39060b15e7ac4681ff711082916dc51f0522e1cefc05e5761205b970c5423793425e
|
data/.gitignore
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Ignore bundler & gem stuff
|
2
|
+
*.gem
|
3
|
+
.bundle
|
4
|
+
Gemfile.lock
|
5
|
+
Jarfile.lock
|
6
|
+
/.jbundler
|
7
|
+
pkg/*
|
8
|
+
|
9
|
+
# Ignore db
|
10
|
+
/db
|
11
|
+
/vendor/datomic
|
12
|
+
|
13
|
+
# Ignore all logfiles and tempfiles.
|
14
|
+
/log
|
15
|
+
/tmp
|
16
|
+
/clojure/target/
|
17
|
+
clojure/.lein-failures
|
18
|
+
clojure/.lein-repl-history
|
19
|
+
clojure/pom.xml
|
data/.jrubyrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
compat.version = 2.0
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
jruby
|
data/Gemfile
ADDED
data/Jarfile
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
repository :jboss, 'https://repository.jboss.org/nexus/content/groups/public-jboss'
|
2
|
+
repository :couchbase, 'https://files.couchbase.com/maven2/'
|
3
|
+
repository :clojars, 'https://clojars.org/repo'
|
4
|
+
|
5
|
+
# Default group is default
|
6
|
+
jar "com.datomic:datomic-pro:[0.9,1.0)"
|
7
|
+
jar "com.goodguide:datomizer:0.2.0"
|
data/README.md
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
# Dalton
|
2
|
+
|
3
|
+
## Datomic for JRuby
|
4
|
+
|
5
|
+
**NB: This project is very alpha. Expect things to change rapidly and without warning.**
|
6
|
+
|
7
|
+
[![John Dalton][john-dalton-img]][john-dalton-wiki]
|
8
|
+
|
9
|
+
### The basics
|
10
|
+
|
11
|
+
``` ruby
|
12
|
+
connection = Dalton::Connection.connect("datomic:mem://my-cool-db")
|
13
|
+
|
14
|
+
# transactions!
|
15
|
+
connection.transact([:'db/add', Dalton::Utility.tempid('db.part/db'), :'db/ident', :'hello/world'])
|
16
|
+
connection.retract(entity)
|
17
|
+
|
18
|
+
# latest db
|
19
|
+
db = connection.refresh
|
20
|
+
|
21
|
+
# querying
|
22
|
+
connection.db.query([:find, '?e', :where, ['?e', :'db/ident', :'hello/world']])
|
23
|
+
```
|
24
|
+
|
25
|
+
### TODO
|
26
|
+
|
27
|
+
* Remove the dependency on Zweikopf and restructure data handling over the bridge
|
28
|
+
* More and better docs, especially for `Dalton::Model`
|
29
|
+
* Test-drive `Dalton::Model`'s design and fill in missing features
|
30
|
+
* Remove the internal `@db` reference from `Dalton::Connection`
|
31
|
+
* Improve naming of `Dalton::Utility` functions and consider extending / separating
|
32
|
+
* Non-Jruby support, potentially through transit and a local peer server
|
33
|
+
|
34
|
+
[john-dalton-img]: https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/John_Dalton_by_Charles_Turner.jpg/240px-John_Dalton_by_Charles_Turner.jpg
|
35
|
+
[john-dalton-wiki]: https://en.wikipedia.org/wiki/John_Dalton
|
data/Rakefile
ADDED
data/dalton.gemspec
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "dalton/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "dalton"
|
7
|
+
s.version = Dalton::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Brian Jenkins", "Joshua Bates"]
|
10
|
+
s.email = ["brian@brianjenkins.org", "joshua@goodguide.com"]
|
11
|
+
s.homepage = ""
|
12
|
+
s.summary = %q{A thin Datomic driver for JRuby}
|
13
|
+
s.description = %q{Dalton attempts to give low level access to Datomic from JRuby}
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_runtime_dependency 'zweikopf', '0.4.0'
|
21
|
+
|
22
|
+
s.license = 'EPL'
|
23
|
+
end
|
data/epl-v10.html
ADDED
@@ -0,0 +1,261 @@
|
|
1
|
+
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
|
7
|
+
<title>Eclipse Public License - Version 1.0</title>
|
8
|
+
<style type="text/css">
|
9
|
+
body {
|
10
|
+
size: 8.5in 11.0in;
|
11
|
+
margin: 0.25in 0.5in 0.25in 0.5in;
|
12
|
+
tab-interval: 0.5in;
|
13
|
+
}
|
14
|
+
p {
|
15
|
+
margin-left: auto;
|
16
|
+
margin-top: 0.5em;
|
17
|
+
margin-bottom: 0.5em;
|
18
|
+
}
|
19
|
+
p.list {
|
20
|
+
margin-left: 0.5in;
|
21
|
+
margin-top: 0.05em;
|
22
|
+
margin-bottom: 0.05em;
|
23
|
+
}
|
24
|
+
</style>
|
25
|
+
|
26
|
+
</head>
|
27
|
+
|
28
|
+
<body lang="EN-US">
|
29
|
+
|
30
|
+
<p align=center><b>Eclipse Public License - v 1.0</b></p>
|
31
|
+
|
32
|
+
<p>THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE
|
33
|
+
PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR
|
34
|
+
DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS
|
35
|
+
AGREEMENT.</p>
|
36
|
+
|
37
|
+
<p><b>1. DEFINITIONS</b></p>
|
38
|
+
|
39
|
+
<p>"Contribution" means:</p>
|
40
|
+
|
41
|
+
<p class="list">a) in the case of the initial Contributor, the initial
|
42
|
+
code and documentation distributed under this Agreement, and</p>
|
43
|
+
<p class="list">b) in the case of each subsequent Contributor:</p>
|
44
|
+
<p class="list">i) changes to the Program, and</p>
|
45
|
+
<p class="list">ii) additions to the Program;</p>
|
46
|
+
<p class="list">where such changes and/or additions to the Program
|
47
|
+
originate from and are distributed by that particular Contributor. A
|
48
|
+
Contribution 'originates' from a Contributor if it was added to the
|
49
|
+
Program by such Contributor itself or anyone acting on such
|
50
|
+
Contributor's behalf. Contributions do not include additions to the
|
51
|
+
Program which: (i) are separate modules of software distributed in
|
52
|
+
conjunction with the Program under their own license agreement, and (ii)
|
53
|
+
are not derivative works of the Program.</p>
|
54
|
+
|
55
|
+
<p>"Contributor" means any person or entity that distributes
|
56
|
+
the Program.</p>
|
57
|
+
|
58
|
+
<p>"Licensed Patents" mean patent claims licensable by a
|
59
|
+
Contributor which are necessarily infringed by the use or sale of its
|
60
|
+
Contribution alone or when combined with the Program.</p>
|
61
|
+
|
62
|
+
<p>"Program" means the Contributions distributed in accordance
|
63
|
+
with this Agreement.</p>
|
64
|
+
|
65
|
+
<p>"Recipient" means anyone who receives the Program under
|
66
|
+
this Agreement, including all Contributors.</p>
|
67
|
+
|
68
|
+
<p><b>2. GRANT OF RIGHTS</b></p>
|
69
|
+
|
70
|
+
<p class="list">a) Subject to the terms of this Agreement, each
|
71
|
+
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
72
|
+
royalty-free copyright license to reproduce, prepare derivative works
|
73
|
+
of, publicly display, publicly perform, distribute and sublicense the
|
74
|
+
Contribution of such Contributor, if any, and such derivative works, in
|
75
|
+
source code and object code form.</p>
|
76
|
+
|
77
|
+
<p class="list">b) Subject to the terms of this Agreement, each
|
78
|
+
Contributor hereby grants Recipient a non-exclusive, worldwide,
|
79
|
+
royalty-free patent license under Licensed Patents to make, use, sell,
|
80
|
+
offer to sell, import and otherwise transfer the Contribution of such
|
81
|
+
Contributor, if any, in source code and object code form. This patent
|
82
|
+
license shall apply to the combination of the Contribution and the
|
83
|
+
Program if, at the time the Contribution is added by the Contributor,
|
84
|
+
such addition of the Contribution causes such combination to be covered
|
85
|
+
by the Licensed Patents. The patent license shall not apply to any other
|
86
|
+
combinations which include the Contribution. No hardware per se is
|
87
|
+
licensed hereunder.</p>
|
88
|
+
|
89
|
+
<p class="list">c) Recipient understands that although each Contributor
|
90
|
+
grants the licenses to its Contributions set forth herein, no assurances
|
91
|
+
are provided by any Contributor that the Program does not infringe the
|
92
|
+
patent or other intellectual property rights of any other entity. Each
|
93
|
+
Contributor disclaims any liability to Recipient for claims brought by
|
94
|
+
any other entity based on infringement of intellectual property rights
|
95
|
+
or otherwise. As a condition to exercising the rights and licenses
|
96
|
+
granted hereunder, each Recipient hereby assumes sole responsibility to
|
97
|
+
secure any other intellectual property rights needed, if any. For
|
98
|
+
example, if a third party patent license is required to allow Recipient
|
99
|
+
to distribute the Program, it is Recipient's responsibility to acquire
|
100
|
+
that license before distributing the Program.</p>
|
101
|
+
|
102
|
+
<p class="list">d) Each Contributor represents that to its knowledge it
|
103
|
+
has sufficient copyright rights in its Contribution, if any, to grant
|
104
|
+
the copyright license set forth in this Agreement.</p>
|
105
|
+
|
106
|
+
<p><b>3. REQUIREMENTS</b></p>
|
107
|
+
|
108
|
+
<p>A Contributor may choose to distribute the Program in object code
|
109
|
+
form under its own license agreement, provided that:</p>
|
110
|
+
|
111
|
+
<p class="list">a) it complies with the terms and conditions of this
|
112
|
+
Agreement; and</p>
|
113
|
+
|
114
|
+
<p class="list">b) its license agreement:</p>
|
115
|
+
|
116
|
+
<p class="list">i) effectively disclaims on behalf of all Contributors
|
117
|
+
all warranties and conditions, express and implied, including warranties
|
118
|
+
or conditions of title and non-infringement, and implied warranties or
|
119
|
+
conditions of merchantability and fitness for a particular purpose;</p>
|
120
|
+
|
121
|
+
<p class="list">ii) effectively excludes on behalf of all Contributors
|
122
|
+
all liability for damages, including direct, indirect, special,
|
123
|
+
incidental and consequential damages, such as lost profits;</p>
|
124
|
+
|
125
|
+
<p class="list">iii) states that any provisions which differ from this
|
126
|
+
Agreement are offered by that Contributor alone and not by any other
|
127
|
+
party; and</p>
|
128
|
+
|
129
|
+
<p class="list">iv) states that source code for the Program is available
|
130
|
+
from such Contributor, and informs licensees how to obtain it in a
|
131
|
+
reasonable manner on or through a medium customarily used for software
|
132
|
+
exchange.</p>
|
133
|
+
|
134
|
+
<p>When the Program is made available in source code form:</p>
|
135
|
+
|
136
|
+
<p class="list">a) it must be made available under this Agreement; and</p>
|
137
|
+
|
138
|
+
<p class="list">b) a copy of this Agreement must be included with each
|
139
|
+
copy of the Program.</p>
|
140
|
+
|
141
|
+
<p>Contributors may not remove or alter any copyright notices contained
|
142
|
+
within the Program.</p>
|
143
|
+
|
144
|
+
<p>Each Contributor must identify itself as the originator of its
|
145
|
+
Contribution, if any, in a manner that reasonably allows subsequent
|
146
|
+
Recipients to identify the originator of the Contribution.</p>
|
147
|
+
|
148
|
+
<p><b>4. COMMERCIAL DISTRIBUTION</b></p>
|
149
|
+
|
150
|
+
<p>Commercial distributors of software may accept certain
|
151
|
+
responsibilities with respect to end users, business partners and the
|
152
|
+
like. While this license is intended to facilitate the commercial use of
|
153
|
+
the Program, the Contributor who includes the Program in a commercial
|
154
|
+
product offering should do so in a manner which does not create
|
155
|
+
potential liability for other Contributors. Therefore, if a Contributor
|
156
|
+
includes the Program in a commercial product offering, such Contributor
|
157
|
+
("Commercial Contributor") hereby agrees to defend and
|
158
|
+
indemnify every other Contributor ("Indemnified Contributor")
|
159
|
+
against any losses, damages and costs (collectively "Losses")
|
160
|
+
arising from claims, lawsuits and other legal actions brought by a third
|
161
|
+
party against the Indemnified Contributor to the extent caused by the
|
162
|
+
acts or omissions of such Commercial Contributor in connection with its
|
163
|
+
distribution of the Program in a commercial product offering. The
|
164
|
+
obligations in this section do not apply to any claims or Losses
|
165
|
+
relating to any actual or alleged intellectual property infringement. In
|
166
|
+
order to qualify, an Indemnified Contributor must: a) promptly notify
|
167
|
+
the Commercial Contributor in writing of such claim, and b) allow the
|
168
|
+
Commercial Contributor to control, and cooperate with the Commercial
|
169
|
+
Contributor in, the defense and any related settlement negotiations. The
|
170
|
+
Indemnified Contributor may participate in any such claim at its own
|
171
|
+
expense.</p>
|
172
|
+
|
173
|
+
<p>For example, a Contributor might include the Program in a commercial
|
174
|
+
product offering, Product X. That Contributor is then a Commercial
|
175
|
+
Contributor. If that Commercial Contributor then makes performance
|
176
|
+
claims, or offers warranties related to Product X, those performance
|
177
|
+
claims and warranties are such Commercial Contributor's responsibility
|
178
|
+
alone. Under this section, the Commercial Contributor would have to
|
179
|
+
defend claims against the other Contributors related to those
|
180
|
+
performance claims and warranties, and if a court requires any other
|
181
|
+
Contributor to pay any damages as a result, the Commercial Contributor
|
182
|
+
must pay those damages.</p>
|
183
|
+
|
184
|
+
<p><b>5. NO WARRANTY</b></p>
|
185
|
+
|
186
|
+
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS
|
187
|
+
PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
188
|
+
OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION,
|
189
|
+
ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY
|
190
|
+
OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely
|
191
|
+
responsible for determining the appropriateness of using and
|
192
|
+
distributing the Program and assumes all risks associated with its
|
193
|
+
exercise of rights under this Agreement , including but not limited to
|
194
|
+
the risks and costs of program errors, compliance with applicable laws,
|
195
|
+
damage to or loss of data, programs or equipment, and unavailability or
|
196
|
+
interruption of operations.</p>
|
197
|
+
|
198
|
+
<p><b>6. DISCLAIMER OF LIABILITY</b></p>
|
199
|
+
|
200
|
+
<p>EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT
|
201
|
+
NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT,
|
202
|
+
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING
|
203
|
+
WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF
|
204
|
+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
205
|
+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR
|
206
|
+
DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED
|
207
|
+
HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.</p>
|
208
|
+
|
209
|
+
<p><b>7. GENERAL</b></p>
|
210
|
+
|
211
|
+
<p>If any provision of this Agreement is invalid or unenforceable under
|
212
|
+
applicable law, it shall not affect the validity or enforceability of
|
213
|
+
the remainder of the terms of this Agreement, and without further action
|
214
|
+
by the parties hereto, such provision shall be reformed to the minimum
|
215
|
+
extent necessary to make such provision valid and enforceable.</p>
|
216
|
+
|
217
|
+
<p>If Recipient institutes patent litigation against any entity
|
218
|
+
(including a cross-claim or counterclaim in a lawsuit) alleging that the
|
219
|
+
Program itself (excluding combinations of the Program with other
|
220
|
+
software or hardware) infringes such Recipient's patent(s), then such
|
221
|
+
Recipient's rights granted under Section 2(b) shall terminate as of the
|
222
|
+
date such litigation is filed.</p>
|
223
|
+
|
224
|
+
<p>All Recipient's rights under this Agreement shall terminate if it
|
225
|
+
fails to comply with any of the material terms or conditions of this
|
226
|
+
Agreement and does not cure such failure in a reasonable period of time
|
227
|
+
after becoming aware of such noncompliance. If all Recipient's rights
|
228
|
+
under this Agreement terminate, Recipient agrees to cease use and
|
229
|
+
distribution of the Program as soon as reasonably practicable. However,
|
230
|
+
Recipient's obligations under this Agreement and any licenses granted by
|
231
|
+
Recipient relating to the Program shall continue and survive.</p>
|
232
|
+
|
233
|
+
<p>Everyone is permitted to copy and distribute copies of this
|
234
|
+
Agreement, but in order to avoid inconsistency the Agreement is
|
235
|
+
copyrighted and may only be modified in the following manner. The
|
236
|
+
Agreement Steward reserves the right to publish new versions (including
|
237
|
+
revisions) of this Agreement from time to time. No one other than the
|
238
|
+
Agreement Steward has the right to modify this Agreement. The Eclipse
|
239
|
+
Foundation is the initial Agreement Steward. The Eclipse Foundation may
|
240
|
+
assign the responsibility to serve as the Agreement Steward to a
|
241
|
+
suitable separate entity. Each new version of the Agreement will be
|
242
|
+
given a distinguishing version number. The Program (including
|
243
|
+
Contributions) may always be distributed subject to the version of the
|
244
|
+
Agreement under which it was received. In addition, after a new version
|
245
|
+
of the Agreement is published, Contributor may elect to distribute the
|
246
|
+
Program (including its Contributions) under the new version. Except as
|
247
|
+
expressly stated in Sections 2(a) and 2(b) above, Recipient receives no
|
248
|
+
rights or licenses to the intellectual property of any Contributor under
|
249
|
+
this Agreement, whether expressly, by implication, estoppel or
|
250
|
+
otherwise. All rights in the Program not expressly granted under this
|
251
|
+
Agreement are reserved.</p>
|
252
|
+
|
253
|
+
<p>This Agreement is governed by the laws of the State of New York and
|
254
|
+
the intellectual property laws of the United States of America. No party
|
255
|
+
to this Agreement will bring a legal action under this Agreement more
|
256
|
+
than one year after the cause of action arose. Each party waives its
|
257
|
+
rights to a jury trial in any resulting litigation.</p>
|
258
|
+
|
259
|
+
</body>
|
260
|
+
|
261
|
+
</html>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
class ApplicationController
|
2
|
+
include Dalton::Model::HasDatabase
|
3
|
+
|
4
|
+
def datomic_uri
|
5
|
+
App.datomic_uri
|
6
|
+
end
|
7
|
+
|
8
|
+
before_filter :refresh_datomic!
|
9
|
+
|
10
|
+
rescue_from Dalton::NotFound do |e|
|
11
|
+
render_404 "Could not find #{e.model} with id #{e.id}"
|
12
|
+
end
|
13
|
+
|
14
|
+
rescue_from Dalton::ValidationError do |e|
|
15
|
+
render_403 "#{e.changes.model} was invalid: #{e.errors.inspect}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
class PostsController < ApplicationController
|
20
|
+
def index
|
21
|
+
author = find(User).entity(params[:author])
|
22
|
+
@posts = find(Post).where(author: author)
|
23
|
+
end
|
24
|
+
|
25
|
+
def show
|
26
|
+
@post = find(Post).entity(params[:id])
|
27
|
+
end
|
28
|
+
|
29
|
+
def create
|
30
|
+
author = find(User).entity(params[:author])
|
31
|
+
@post = Post.create! do |p|
|
32
|
+
p.content = params[:content]
|
33
|
+
p.change_ref(:author) do |a|
|
34
|
+
a.last_post = p
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def update
|
40
|
+
find(Post).entity(params[:id]).change! do |p|
|
41
|
+
p.content = params[:content]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def destroy
|
46
|
+
find(Post).entity(params[:id]).retract!
|
47
|
+
end
|
48
|
+
end
|
data/lib/dalton.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby" or raise "JRuby required."
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'jbundler'
|
5
|
+
require 'zweikopf'
|
6
|
+
require 'pathname'
|
7
|
+
|
8
|
+
module Dalton
|
9
|
+
class DatomicError < StandardError
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
load_dir = Pathname.new(__FILE__).dirname
|
14
|
+
load load_dir.join('dalton/utility.rb')
|
15
|
+
|
16
|
+
load load_dir.join('dalton/datomization.rb')
|
17
|
+
load load_dir.join('dalton/undatomization.rb')
|
18
|
+
|
19
|
+
load load_dir.join('dalton/exception.rb')
|
20
|
+
load load_dir.join('dalton/database.rb')
|
21
|
+
load load_dir.join('dalton/connection.rb')
|
22
|
+
load load_dir.join('dalton/entity.rb')
|
23
|
+
load load_dir.join('dalton/transaction_result.rb')
|
24
|
+
load load_dir.join('dalton/attribute.rb')
|
25
|
+
load load_dir.join('dalton/translation.rb')
|
26
|
+
|
27
|
+
class Object
|
28
|
+
def to_edn
|
29
|
+
Dalton::Utility.to_edn(self)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
# We need to shut down the Datomic driver and Clojure runtime
|
34
|
+
# before exit, or there will be ~20 second delay shutting down the JVM.
|
35
|
+
at_exit do
|
36
|
+
Java::Datomic::Peer.shutdown(true) # true means "also shut down Clojure runtime"
|
37
|
+
end
|