Skip to content
This repository was archived by the owner on Aug 16, 2023. It is now read-only.

Commit e8b7572

Browse files
authored
Update README.md
1 parent fdc1bcd commit e8b7572

File tree

1 file changed

+73
-15
lines changed

1 file changed

+73
-15
lines changed

README.md

Lines changed: 73 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,80 @@
1-
# graphqlize-java
1+
[GraphQLize](https://www.graphqlize.org), an open-source Java(JVM) library for developing GraphQL API instantly from your existing PostgreSQL and MySQL databases.
22

3-
A Clojure library designed to ... well, that part is up to you.
3+
It aims to simplify the effort required to expose GraphQL APIs over relational databases.
44

5-
## Usage
5+
> GraphQLize is at its early stages now. The objective of this early release is to get early feedback from the community. **It is not production-ready yet!**
66
7-
FIXME
7+
[![Clojars Project](https://img.shields.io/clojars/v/org.graphqlize/graphqlize-java.svg)]
88

9-
## License
9+
<a href="https://discord.gg/akkdPqf"><img src="https://img.shields.io/badge/chat-discord-brightgreen.svg?logo=discord&style=flat"></a>
10+
<a href="https://twitter.com/intent/follow?screen_name=GraphQLize"><img src="https://img.shields.io/badge/Follow-GraphQLize-blue.svg?style=flat&logo=twitter"></a>
11+
12+
## Rationale
13+
14+
In the JVM ecosystem, developing GraphQL APIs to expose the data from the relational databases requires a lot of manual work. Right from defining the GraphQL schemas (either code-first or schema-first) to wiring them with resolvers and the database access logic, we spend a significant amount of our development time.
15+
16+
In addition to this, we also need to take care of optimizing the underlying SQL queries to avoid problems like N+1 queries. We have to account the maintenance of the resulting codebase as well!
17+
18+
GraphQLize will help you to overcome all these shortcomings. It provides you with an efficient GraphQL implementation in just few lines of code.
19+
20+
## What is GraphQLize?
21+
22+
GraphQLize is a JVM library written in Clojure with Java interoperability. The crux of GraphQLize is generating the GraphQL schema and resolving the queries by making use of [JDBC metadata](https://docs.oracle.com/javase/7/docs/api/java/sql/DatabaseMetaData.html) provided by the JDBC drivers.
23+
24+
It currently supports Postgres (9.4 & above) and MySQL (8.0 & above).
25+
26+
## Getting Started
27+
28+
Getting started with GraphQLize is simple and involves only a few steps.
29+
30+
1. Add the GraphQLize dependency in your project.
31+
2. Initialize GraphQLize Resolver by providing the Java SQL [data source](https://docs.oracle.com/javase/7/docs/api/javax/sql/DataSource.html).
32+
3. Add a GraphQL API endpoint and use the initialized GraphQlize Resolver in the previous step.
33+
34+
The actual implementation of these steps will vary based on which framework (Spring Boot, Spark Java, etc.). Please refer the below links for more details.
35+
36+
- [Spring Boot](http://graphqlize.org/docs/getting_started/java/springboot)
37+
- [Spark Java](http://graphqlize.org/docs/getting_started/java/sparkjava)
38+
- [Vanilla Java](https://www.graphqlize.org/docs/getting_started/java/vanilla)
39+
40+
## Is It Production Ready?
41+
42+
It will be in a few months.
1043

11-
Copyright © 2020 FIXME
44+
The objective of this alpha release is to get early feedback from the community.
1245

13-
This program and the accompanying materials are made available under the
14-
terms of the Eclipse Public License 2.0 which is available at
15-
http://www.eclipse.org/legal/epl-2.0.
46+
There are close to [forty issues](https://github.com/graphqlize/graphqlize/issues?q=is%3Aissue+is%3Aopen+sort%3Acreated-asc) that I am planning to work on in the upcoming months to make it production ready.
47+
48+
You can keep track of the progress by
49+
50+
- Following the [GitHub project board](https://github.com/orgs/graphqlize/projects/1)
51+
- Subscribing to [GraphQLize's newsletter]().
52+
- Joining [GraphQLize's Discord](https://discord.gg/akkdPqf).
53+
54+
## How can I contribute?
55+
56+
GraphQLize is at its early stage now, and the codebase and the APIs are not stable yet.
57+
58+
So, at this instant, the best way to contribute is to initiate a chat in [GraphQLize's Discord](https://discord.gg/akkdPqf) channel or raise [a GitHub issue](https://github.com/graphqlize/graphqlize/issues/new) with all the relevant details, and we'll take it from there.
59+
60+
## Oracle & SQL Server Support
61+
62+
One of the design goal of GraphQLize from day one is to support Postgres, MySQL, Oracle & MS SQL Server. To start with, I am focussing on getting it to a production ready state for Postgres & MySQL. After accomplishing this, I will be focusing on the other two.
63+
64+
## Acknowledgements
65+
66+
[PostgREST](http://postgrest.org), [PostGraphile](https://www.graphile.org/postgraphile/), [KeyStoneJs](https://www.keystonejs.com/) and [Hasura](https://hasura.io/) are the inspiration behind GraphQLize.
67+
68+
GraphQLize is not possible without the following excellent Clojure libraries.
69+
70+
- [HoneySQL](https://github.com/jkk/honeysql)
71+
- [Lacinia](https://github.com/walmartlabs/lacinia)
72+
- [next-jdbc](https://github.com/seancorfield/next-jdbc)
73+
- [inflections](https://github.com/r0man/inflections-clj)
74+
- [data-json](https://github.com/clojure/data.json)
75+
76+
The samples in the documentation of GraphQLize uses the [Sakila](https://www.jooq.org/sakila) database from [JOOQ](https://www.jooq.org) extensively.
77+
78+
## License
1679

17-
This Source Code may also be made available under the following Secondary
18-
Licenses when the conditions for such availability set forth in the Eclipse
19-
Public License, v. 2.0 are satisfied: GNU General Public License as published by
20-
the Free Software Foundation, either version 2 of the License, or (at your
21-
option) any later version, with the GNU Classpath Exception which is available
22-
at https://www.gnu.org/software/classpath/license.html.
80+
The use and distribution terms for this software are covered by the [Eclipse Public License - v 2.0](https://www.eclipse.org/legal/epl-2.0). By using this software in any fashion, you are agreeing to be bound by the terms of this license.

0 commit comments

Comments
 (0)