summaryrefslogtreecommitdiff
blob: 4651e8cdf710aac7fa4f244666b0cb801d30be9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
	<herd>haskell</herd>
	<longdescription>
		@persistent@ is a library for type-safe data serialization.  It
		has many kinds of backends, such as SQL backends
		(@persistent-mysql@, @persistent-postgresql@,
		@persistent-sqlite@) and NoSQL backends (@persistent-mongoDB@).
		
		While @persistent@ is a nice library for storing and retrieving
		records, currently it has a poor interface for SQL backends
		compared to SQL itself.  For example, it&#39;s extremely hard to do
		a type-safe @JOIN@ on a many-to-one relation, and simply
		impossible to do any other kinds of @JOIN@s (including for the
		very common many-to-many relations).  Users have the option of
		writing raw SQL, but that&#39;s error prone and not type-checked.
		
		@esqueleto@ is a bare bones, type-safe EDSL for SQL queries
		that works with unmodified @persistent@ SQL backends.  Its
		language closely resembles SQL, so (a) you don&#39;t have to learn
		new concepts, just new syntax, and (b) it&#39;s fairly easy to
		predict the generated SQL and optimize it for your backend.
		Most kinds of errors committed when writing SQL are caught as
		compile-time errors---although it is possible to write
		type-checked @esqueleto@ queries that fail at runtime.
		
		Currently only @SELECT@s are supported.  Not all SQL features
		are available, but most of them can be easily added (especially
		functions), so please open an issue or send a pull request if
		you need anything that is not covered by @esqueleto@ on
		&lt;https://github.com/meteficha/esqueleto/&gt;.
		
		The name of this library means \&quot;skeleton\&quot; in Portuguese and
		contains all three SQL letters in the correct order =).  It was
		inspired by Scala&#39;s Squeryl but created from scratch.
	</longdescription>
</pkgmetadata>