From 5b321c498fd1d2c04855f9536d95a90eb0624333 Mon Sep 17 00:00:00 2001 From: "Daniel J. Summers" Date: Tue, 15 Apr 2025 22:44:55 -0400 Subject: [PATCH] Add doc site --- .gitignore | 4 ++-- bitbadger-doc.png | Bin 0 -> 12624 bytes doc-template/public/main.css | 4 ++++ doc-template/public/main.js | 10 +++++++++ docfx.json | 39 +++++++++++++++++++++++++++++++++ docs/getting-started.md | 17 +++++++++++++++ docs/toc.yml | 2 ++ favicon.ico | Bin 0 -> 9528 bytes index.md | 41 +++++++++++++++++++++++++++++++++++ toc.yml | 2 ++ 10 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 bitbadger-doc.png create mode 100644 doc-template/public/main.css create mode 100644 doc-template/public/main.js create mode 100644 docfx.json create mode 100644 docs/getting-started.md create mode 100644 docs/toc.yml create mode 100644 favicon.ico create mode 100644 index.md create mode 100644 toc.yml diff --git a/.gitignore b/.gitignore index 7fea862..91ef75e 100644 --- a/.gitignore +++ b/.gitignore @@ -30,5 +30,5 @@ replay_pid* # Temporary output directories **/target -# Maven Central Repo settings -settings.xml +# Doc output directory +_site diff --git a/bitbadger-doc.png b/bitbadger-doc.png new file mode 100644 index 0000000000000000000000000000000000000000..22b1fe2e111d43569dcb24ac686659cf9ccbe42d GIT binary patch literal 12624 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 D_HYw> literal 0 HcmV?d00001 diff --git a/doc-template/public/main.css b/doc-template/public/main.css new file mode 100644 index 0000000..cfa8c03 --- /dev/null +++ b/doc-template/public/main.css @@ -0,0 +1,4 @@ +article h2 { + border-bottom: solid 1px gray; + margin-bottom: 1rem; +} diff --git a/doc-template/public/main.js b/doc-template/public/main.js new file mode 100644 index 0000000..264108e --- /dev/null +++ b/doc-template/public/main.js @@ -0,0 +1,10 @@ +export default { + defaultTheme: "auto", + iconLinks: [ + { + icon: "git", + href: "https://git.bitbadger.solutions/bit-badger/solutions.bitbadger.documents", + title: "Source Repository" + } + ] +} \ No newline at end of file diff --git a/docfx.json b/docfx.json new file mode 100644 index 0000000..b7f907b --- /dev/null +++ b/docfx.json @@ -0,0 +1,39 @@ +{ + "$schema": "https://raw.githubusercontent.com/dotnet/docfx/main/schemas/docfx.schema.json", + "build": { + "content": [ + { + "files": [ + "**/*.{md,yml}" + ], + "exclude": [ + "_site/**" + ] + } + ], + "resource": [ + { + "files": [ + "images/**", + "bitbadger-doc.png", + "favicon.ico" + ] + } + ], + "output": "_site", + "template": [ + "default", + "modern", + "doc-template" + ], + "globalMetadata": { + "_appName": "solutions.bitbadger.documents", + "_appTitle": "solutions.bitbadger.documents", + "_appLogoPath": "bitbadger-doc.png", + "_appFaviconPath": "favicon.ico", + "_appFooter": "Hand-crafted documentation created with docfx by Bit Badger Solutions", + "_enableSearch": true, + "pdf": false + } + } +} \ No newline at end of file diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 0000000..1900b27 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,17 @@ +# Getting Started + +The exceedingly quick version: + +- Add the desired module/package to your dependencies +- Implement an instance of the `DocumentSerializer` interface and assign it to the `DocumentConfig.serializer` property (for all but kotlinx) +- Set a PostgreSQL or SQLite JDBC connection string for the `Configuration.connectionString` property + +At this point, `Connection.dbConn()` will provide a connection which can be used either for function calls or extension method calls. You will also be able to call functions without providing a connection, and the library will create one for that command. (Database pooling will help reduce connection overhead when using this technique.) + +From there, `Definition.ensureTable(name)` will create a table, and you are ready to start manipulating documents! + +(Documentation is in active development; until it is more complete, the flow is very similar to [BitBadger.Documents](https://bitbadger.solutions/open-source/relational-documents/dotnet/basic-usage.html), the .NET implementation of a similar library. This library also supports `Json` in place of `Find` to return raw JSON, and `Json.write*` to write that JSON to a `PrintWriter`, bypassing the entire deserialize-from-the-database, serialize-to-the-output-body process.) + +## Examples + +Each library has an exhaustive suite of integration tests; reviewing those may also provide insight into the patterns used for effective document storage and retrieval. diff --git a/docs/toc.yml b/docs/toc.yml new file mode 100644 index 0000000..6c61598 --- /dev/null +++ b/docs/toc.yml @@ -0,0 +1,2 @@ +- name: Getting Started + href: getting-started.md \ No newline at end of file diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..22ca446ef7fa60edfaea87e1007d7dff21cebc68 GIT binary patch literal 9528 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 PaW~i|gS7Jhm2LkA{Ji#} literal 0 HcmV?d00001 diff --git a/index.md b/index.md new file mode 100644 index 0000000..511c427 --- /dev/null +++ b/index.md @@ -0,0 +1,41 @@ +--- +_layout: landing +--- + +Welcome! This project implements the [relational document](/) concepts for Java, Kotlin, Scala, and Groovy applications. + +## Modules + +The coordinate structure for these packages is +```xml +solutions.bitbadger.documents +[package] +1.0.0-RC1 +``` + +### solutions.bitbadger.documents.core + +![Maven Central Version](https://img.shields.io/maven-central/v/solutions.bitbadger.documents/core) + +This module does most of the heavy lifting for all languages. It provides an optimal Java experience and an optimal Kotlin experience when using a reflection-based JSON serializer. Queries that can return one-or-none return an `Optional` instance. This module also has Kotlin extensions on the JDBC `Connection` type + +### solutions.bitbadger.documents.groovy + +![Maven Central Version](https://img.shields.io/maven-central/v/solutions.bitbadger.documents/groovy) + +This far-out module provides Groovy-style extension methods on the `Connection` type. (Right on!) + +### solutions.bitbadger.documents.scala + +![Maven Central Version](https://img.shields.io/maven-central/v/solutions.bitbadger.documents/scala) + +This module provides a native Scala API for this library, using its collection types instead of the default Java collections, and returns the Scala `Option[A]` type for one-or-none queries. It also provides Scala extension methods for the `Connection` type. + +### solutions.bitbadger.documents.kotlinx + +![Maven Central Version](https://img.shields.io/maven-central/v/solutions.bitbadger.documents/kotlinx) + +This module utilizes [`kotlix.serialization`][kotlinx] for its serialization and deserialization, which implements these actions without reflection. As its primary consumer is Kotlin, it returns `null` for one-or-none queries. + + +[kotlinx]: https://github.com/Kotlin/kotlinx.serialization "KotlinX Serialization • GitHub" diff --git a/toc.yml b/toc.yml new file mode 100644 index 0000000..4159304 --- /dev/null +++ b/toc.yml @@ -0,0 +1,2 @@ +- name: Docs + href: docs/ \ No newline at end of file