kjkjsakjdsaha9dusadijsalksadsd
This commit is contained in:
commit
9bb808ae7f
9 changed files with 185 additions and 0 deletions
21
LICENSE
Normal file
21
LICENSE
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2024 Fijxu <fijxu@nadeko.net>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
27
README.md
Normal file
27
README.md
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
# crystal-jsonb-test
|
||||||
|
|
||||||
|
TODO: Write a description here
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
TODO: Write installation instructions here
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
TODO: Write usage instructions here
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
TODO: Write development instructions here
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
1. Fork it (<https://github.com/your-github-user/crystal-jsonb-test/fork>)
|
||||||
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
||||||
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
||||||
|
4. Push to the branch (`git push origin my-new-feature`)
|
||||||
|
5. Create a new Pull Request
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
- [Fijxu](https://github.com/your-github-user) - creator and maintainer
|
10
shard.lock
Normal file
10
shard.lock
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
version: 2.0
|
||||||
|
shards:
|
||||||
|
db:
|
||||||
|
git: https://github.com/crystal-lang/crystal-db.git
|
||||||
|
version: 0.13.1
|
||||||
|
|
||||||
|
pg:
|
||||||
|
git: https://github.com/will/crystal-pg.git
|
||||||
|
version: 0.29.0
|
||||||
|
|
19
shard.yml
Normal file
19
shard.yml
Normal file
|
@ -0,0 +1,19 @@
|
||||||
|
name: crystal-jsonb-test
|
||||||
|
version: 0.1.0
|
||||||
|
|
||||||
|
authors:
|
||||||
|
- Fijxu <fijxu@nadeko.net>
|
||||||
|
|
||||||
|
targets:
|
||||||
|
crystal-jsonb-test:
|
||||||
|
main: src/crystal-jsonb-test.cr
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
db:
|
||||||
|
github: crystal-lang/crystal-db
|
||||||
|
pg:
|
||||||
|
github: will/crystal-pg
|
||||||
|
|
||||||
|
crystal: '>= 1.13.3'
|
||||||
|
|
||||||
|
license: MIT
|
9
spec/crystal-jsonb-test_spec.cr
Normal file
9
spec/crystal-jsonb-test_spec.cr
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
require "./spec_helper"
|
||||||
|
|
||||||
|
describe Crystal::Jsonb::Test do
|
||||||
|
# TODO: Write tests
|
||||||
|
|
||||||
|
it "works" do
|
||||||
|
false.should eq(true)
|
||||||
|
end
|
||||||
|
end
|
2
spec/spec_helper.cr
Normal file
2
spec/spec_helper.cr
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
require "spec"
|
||||||
|
require "../src/crystal-jsonb-test"
|
30
src/crystal-jsonb-test.cr
Normal file
30
src/crystal-jsonb-test.cr
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
require "db"
|
||||||
|
require "pg"
|
||||||
|
|
||||||
|
require "json"
|
||||||
|
|
||||||
|
PG_DB = DB.open "postgres://postgres:postgres@127.0.0.1:5432/postgres"
|
||||||
|
|
||||||
|
PG_DB.exec("CREATE TABLE IF NOT EXISTS test4 (id SERIAL PRIMARY KEY, data JSONB)")
|
||||||
|
|
||||||
|
json = JSON.build do |json|
|
||||||
|
json.object do
|
||||||
|
json.field "xd", "xd"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
insert = <<-SQL
|
||||||
|
INSERT INTO test4 (data) VALUES ($1)
|
||||||
|
SQL
|
||||||
|
|
||||||
|
PG_DB.exec(insert, json)
|
||||||
|
result = PG_DB.query_one("SELECT data FROM test4 WHERE id = 1", as: JSON::Any)
|
||||||
|
puts result["xd"]
|
||||||
|
|
||||||
|
# update = <<-SQL
|
||||||
|
# UPDATE test4
|
||||||
|
# SET data = array_append(data, $1)
|
||||||
|
# WHERE id = $2
|
||||||
|
# SQL
|
||||||
|
|
||||||
|
# PG_DB.exec(update, json, 1)
|
22
src/real.cr
Normal file
22
src/real.cr
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
require "db"
|
||||||
|
require "pg"
|
||||||
|
|
||||||
|
require "json"
|
||||||
|
|
||||||
|
PG_DB = DB.open "postgres://postgres:postgres@127.0.0.1:5432/postgres"
|
||||||
|
|
||||||
|
PG_DB.exec("CREATE TABLE IF NOT EXISTS test2 (id SERIAL PRIMARY KEY, data JSONB)")
|
||||||
|
|
||||||
|
# json = %({ "xd": "xd" })
|
||||||
|
|
||||||
|
json = JSON.build do |json|
|
||||||
|
json.object do
|
||||||
|
json.field "xd", "xd"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
PG_DB.exec("INSERT INTO test2 (data) VALUES ($1)", json)
|
||||||
|
|
||||||
|
result = PG_DB.query_one("SELECT data FROM test2 WHERE id = 1", as: JSON::Any)
|
||||||
|
|
||||||
|
puts result["xd"]
|
45
src/xd.cr
Normal file
45
src/xd.cr
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
require "db"
|
||||||
|
require "pg"
|
||||||
|
|
||||||
|
require "json"
|
||||||
|
|
||||||
|
PG_DB = DB.open "postgres://postgres:postgres@127.0.0.1:5432/postgres"
|
||||||
|
|
||||||
|
PG_DB.exec("CREATE TABLE IF NOT EXISTS test (id TEXT PRIMARY KEY, data _JSONB)")
|
||||||
|
|
||||||
|
|
||||||
|
json : String = %({ "name": "John", "age": 30, "city": "New York" })
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# # json = JSON.build do |json|
|
||||||
|
# # json.object do
|
||||||
|
# # json.field "name", "John"
|
||||||
|
# # json.field "age", 30
|
||||||
|
# # json.field "city", "New York"
|
||||||
|
# # end
|
||||||
|
# # end
|
||||||
|
|
||||||
|
# PG_DB.exec("INSERT INTO test (id, data) VALUES ('fijxu', '#{json}')")
|
||||||
|
|
||||||
|
# # PG_DB.exec("INSERT INTO test (id, data) VALUES ('fijxu', '#{json}')")
|
||||||
|
|
||||||
|
# # result = PG_DB.query_one("SELECT data FROM test WHERE id = 1", as: JSON::Any)
|
||||||
|
|
||||||
|
# # puts result["name"] # => "John"
|
||||||
|
|
||||||
|
# request = <<-SQL
|
||||||
|
# UPDATE test
|
||||||
|
# SET data = array_append(data, $1)
|
||||||
|
# WHERE id = $2
|
||||||
|
# SQL
|
||||||
|
|
||||||
|
# # PG_DB.exec(request, json, "fijxu")
|
||||||
|
|
||||||
|
# result = PG_DB.query_one("SELECT data FROM test WHERE id = $1", "fijxu", as: JSON::Any)
|
||||||
|
|
||||||
|
# # puts result["name"] # => "John"
|
||||||
|
|
||||||
|
|
||||||
|
# pp result
|
||||||
|
|
Loading…
Reference in a new issue