ordlite 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -0
- data/Manifest.txt +5 -0
- data/Rakefile +7 -2
- data/lib/ordlite/models/blob.rb +11 -0
- data/lib/ordlite/models/forward.rb +23 -0
- data/lib/ordlite/models/inscribe.rb +11 -0
- data/lib/ordlite/schema.rb +107 -0
- data/lib/ordlite/version.rb +22 -0
- data/lib/ordlite.rb +103 -1
- metadata +76 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d227087815f81d4a3bc1791e2fd34639074c8000568ca1c378c865d5450e39a
|
4
|
+
data.tar.gz: c3697c7d069e85ade6dd427918796d5bf6cd302475299f5eb080287c80536508
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0b7d753c4767407663ff2e29f2eaf2efe2689e0283ae332ada7404e3fc797678664a91d285e79cb09abf3f73675615f729c6e653093d9d895f710def43954503
|
7
|
+
data.tar.gz: b85fd1bfe93b17dd26bd5e6e4e1c57b88cc2cad152405ef524a3a17dc3a9c50f740a9a83e2bc7c731dbf5b4a7b6fc7480c0881bf7ea174f86f593deb4f544f9a
|
data/CHANGELOG.md
CHANGED
data/Manifest.txt
CHANGED
data/Rakefile
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'hoe'
|
2
|
-
|
2
|
+
require './lib/ordlite/version.rb'
|
3
3
|
|
4
4
|
Hoe.spec 'ordlite' do
|
5
5
|
|
6
|
-
self.version =
|
6
|
+
self.version = Ordlite::VERSION
|
7
7
|
|
8
8
|
|
9
9
|
self.summary = "ordlite - ordinals inscription (on bitcoin & co) database let's you query via sql and more"
|
@@ -20,6 +20,11 @@ Hoe.spec 'ordlite' do
|
|
20
20
|
|
21
21
|
self.extra_deps = [
|
22
22
|
['activerecord'],
|
23
|
+
['activerecord-utils'],
|
24
|
+
['logutils'],
|
25
|
+
['logutils-activerecord'],
|
26
|
+
['props'],
|
27
|
+
['props-activerecord'],
|
23
28
|
['sqlite3'],
|
24
29
|
]
|
25
30
|
|
@@ -0,0 +1,23 @@
|
|
1
|
+
|
2
|
+
### forward references
|
3
|
+
## require first to resolve circular references
|
4
|
+
|
5
|
+
module OrdDb
|
6
|
+
module Model
|
7
|
+
|
8
|
+
#############
|
9
|
+
# ConfDb
|
10
|
+
Prop = ConfDb::Model::Prop
|
11
|
+
|
12
|
+
|
13
|
+
class Inscribe < ActiveRecord::Base ; end
|
14
|
+
class Blob < ActiveRecord::Base ; end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
# note: convenience alias for Model
|
19
|
+
# lets you use include OrdDb::Models
|
20
|
+
Models = Model
|
21
|
+
end # module # OrdDb
|
22
|
+
|
23
|
+
|
@@ -0,0 +1,107 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
module OrdDb
|
4
|
+
|
5
|
+
class CreateDb
|
6
|
+
|
7
|
+
def up
|
8
|
+
|
9
|
+
ActiveRecord::Schema.define do
|
10
|
+
|
11
|
+
|
12
|
+
=begin
|
13
|
+
CREATE TABLE inscribes(
|
14
|
+
id varchar NOT NULL PRIMARY KEY,
|
15
|
+
num integer NOT NULL,
|
16
|
+
content_length integer NOT NULL,
|
17
|
+
content_type varchar NOT NULL,
|
18
|
+
date datetime(6) NOT NULL,
|
19
|
+
sat integer NOT NULL,
|
20
|
+
height integer NOT NULL,
|
21
|
+
fee integer NOT NULL,
|
22
|
+
tx varchar NOT NULL,
|
23
|
+
offset integer NOT NULL,
|
24
|
+
address varchar NOT NULL,
|
25
|
+
|
26
|
+
created_at datetime(6) NOT NULL,
|
27
|
+
updated_at datetime(6) NOT NULL)
|
28
|
+
|
29
|
+
CREATE TABLE blobs(
|
30
|
+
id varchar NOT NULL PRIMARY KEY,
|
31
|
+
content blob NOT NULL
|
32
|
+
|
33
|
+
created_at datetime(6) NOT NULL,
|
34
|
+
updated_at datetime(6) NOT NULL)
|
35
|
+
=end
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
create_table :inscribes, :id => :string do |t|
|
40
|
+
## "id": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5ci0",
|
41
|
+
## note: change to uuid (universally unique id) - why? why not?
|
42
|
+
## id gets used by row_id (internal orm db machinery) and is int
|
43
|
+
## t.string :uuid, null: false, index: { unique: true, name: 'inscribe_uuids' }
|
44
|
+
|
45
|
+
## "title": "Inscription 10371414",
|
46
|
+
## note: use num/no. from title only - why? why not?
|
47
|
+
t.integer :num, null: false, index: { unique: true, name: 'inscribe_nums' }
|
48
|
+
|
49
|
+
## "content length": "85 bytes",
|
50
|
+
## note: extract bytes as integer!!!
|
51
|
+
t.integer :content_length, null: false
|
52
|
+
## "content type": "text/plain;charset=utf-8",
|
53
|
+
## note: make sure always lower/down case!!!
|
54
|
+
t.string :content_type, null: false
|
55
|
+
|
56
|
+
## "timestamp": "2023-06-01 05:00:57 UTC"
|
57
|
+
## or use date_utc ???
|
58
|
+
t.datetime :date, null: false
|
59
|
+
|
60
|
+
##
|
61
|
+
## "sat": "967502783701719",
|
62
|
+
t.integer :sat, null: false
|
63
|
+
|
64
|
+
##
|
65
|
+
## "genesis height": "792337",
|
66
|
+
## "genesis fee": "6118",
|
67
|
+
## "genesis transaction": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5c",
|
68
|
+
## "offset": "0"
|
69
|
+
t.integer :height, null: false
|
70
|
+
t.integer :fee, null: false
|
71
|
+
t.string :tx, null: false
|
72
|
+
t.integer :offset, null: false
|
73
|
+
|
74
|
+
###
|
75
|
+
## "address": "bc1p3h4eecuxjj2g72sq38gyva732866u5w29lhxgeqfe6c0sg8xmagsuau63k",
|
76
|
+
## is this minter/inscriber addr???
|
77
|
+
t.string :address, null: false
|
78
|
+
|
79
|
+
## -- ignore for now - why? why not?
|
80
|
+
## what is output ???
|
81
|
+
## "location": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5c:0:0",
|
82
|
+
## "output": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5c:0",
|
83
|
+
## "output value": "546",
|
84
|
+
|
85
|
+
## timestamp at last
|
86
|
+
t.timestamps
|
87
|
+
end
|
88
|
+
|
89
|
+
|
90
|
+
create_table :blobs, :id => :string do |t|
|
91
|
+
## "id": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5ci0",
|
92
|
+
## note: change to uuid (universally unique id) - why? why not?
|
93
|
+
## id gets used by row_id (internal orm db machinery) and is int
|
94
|
+
## t.string :id, null: false, index: { unique: true, name: 'blob_uuids' }
|
95
|
+
|
96
|
+
t.binary :content, null: false
|
97
|
+
|
98
|
+
## timestamp at last
|
99
|
+
t.timestamps
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
end # block Schema.define
|
104
|
+
|
105
|
+
end # method up
|
106
|
+
end # class CreateDb
|
107
|
+
end # module OrdDb
|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
module Ordlite
|
3
|
+
|
4
|
+
# sync version w/ sport.db n friends - why? why not?
|
5
|
+
MAJOR = 0 ## todo: namespace inside version or something - why? why not??
|
6
|
+
MINOR = 1
|
7
|
+
PATCH = 0
|
8
|
+
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
9
|
+
|
10
|
+
def self.version
|
11
|
+
VERSION
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.banner
|
15
|
+
"ordlite/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in >#{root}<"
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.root
|
19
|
+
File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
data/lib/ordlite.rb
CHANGED
@@ -1,3 +1,105 @@
|
|
1
|
+
# core and stlibs
|
1
2
|
|
2
|
-
|
3
|
+
require 'pp'
|
4
|
+
require 'fileutils'
|
5
|
+
require 'uri'
|
6
|
+
require 'json'
|
7
|
+
require 'yaml'
|
3
8
|
|
9
|
+
require 'logger' # Note: use for ActiveRecord::Base.logger -- remove/replace later w/ LogUtils::Logger ???
|
10
|
+
|
11
|
+
|
12
|
+
# 3rd party gems / libs
|
13
|
+
require 'props' # see github.com/rubylibs/props
|
14
|
+
require 'logutils' # see github.com/rubylibs/logutils
|
15
|
+
|
16
|
+
|
17
|
+
require 'active_record' ## todo: add sqlite3? etc.
|
18
|
+
|
19
|
+
## add more activerecords addons/utils
|
20
|
+
# require 'tagutils'
|
21
|
+
require 'activerecord/utils'
|
22
|
+
require 'props/activerecord' # includes ConfDb (ConfDb::Model::Prop, etc.)
|
23
|
+
require 'logutils/activerecord' # includes LogDb (LogDb::Model::Log, etc.)
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
# our own code
|
28
|
+
|
29
|
+
require 'ordlite/version' # always goes first
|
30
|
+
|
31
|
+
require 'ordlite/models/forward'
|
32
|
+
|
33
|
+
require 'ordlite/models/inscribe'
|
34
|
+
require 'ordlite/models/blob'
|
35
|
+
|
36
|
+
|
37
|
+
require 'ordlite/schema'
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
module OrdDb
|
42
|
+
|
43
|
+
def self.create
|
44
|
+
CreateDb.new.up
|
45
|
+
ConfDb::Model::Prop.create!( key: 'db.schema.ord.version',
|
46
|
+
value: Ordlite::VERSION )
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.create_all
|
50
|
+
LogDb.create # add logs table
|
51
|
+
ConfDb.create # add props table
|
52
|
+
OrdDb.create
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.connect( config={} )
|
56
|
+
|
57
|
+
if config.empty?
|
58
|
+
puts "ENV['DATBASE_URL'] - >#{ENV['DATABASE_URL']}<"
|
59
|
+
|
60
|
+
### change default to ./ord.db ?? why? why not?
|
61
|
+
db = URI.parse( ENV['DATABASE_URL'] || 'sqlite3:///ord.db' )
|
62
|
+
|
63
|
+
if db.scheme == 'postgres'
|
64
|
+
config = {
|
65
|
+
adapter: 'postgresql',
|
66
|
+
host: db.host,
|
67
|
+
port: db.port,
|
68
|
+
username: db.user,
|
69
|
+
password: db.password,
|
70
|
+
database: db.path[1..-1],
|
71
|
+
encoding: 'utf8'
|
72
|
+
}
|
73
|
+
else # assume sqlite3
|
74
|
+
config = {
|
75
|
+
adapter: db.scheme, # sqlite3
|
76
|
+
database: db.path[1..-1] # ord.db (NB: cut off leading /, thus 1..-1)
|
77
|
+
}
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
puts "Connecting to db using settings: "
|
82
|
+
pp config
|
83
|
+
ActiveRecord::Base.establish_connection( config )
|
84
|
+
# ActiveRecord::Base.logger = Logger.new( STDOUT )
|
85
|
+
end
|
86
|
+
|
87
|
+
|
88
|
+
def self.setup_in_memory_db
|
89
|
+
|
90
|
+
# Database Setup & Config
|
91
|
+
ActiveRecord::Base.logger = Logger.new( STDOUT )
|
92
|
+
## ActiveRecord::Base.colorize_logging = false - no longer exists - check new api/config setting?
|
93
|
+
|
94
|
+
self.connect( adapter: 'sqlite3',
|
95
|
+
database: ':memory:' )
|
96
|
+
|
97
|
+
## build schema
|
98
|
+
OrdDb.create_all
|
99
|
+
end # setup_in_memory_db (using SQLite :memory:)
|
100
|
+
|
101
|
+
end # module OrdDb
|
102
|
+
|
103
|
+
|
104
|
+
# say hello
|
105
|
+
puts Ordlite.banner ## if defined?($RUBYCOCOS_DEBUG) && $RUBCOCOS_DEBUG
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ordlite
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -24,6 +24,76 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activerecord-utils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: logutils
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: logutils-activerecord
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: props
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: props-activerecord
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
27
97
|
- !ruby/object:Gem::Dependency
|
28
98
|
name: sqlite3
|
29
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,6 +157,11 @@ files:
|
|
87
157
|
- README.md
|
88
158
|
- Rakefile
|
89
159
|
- lib/ordlite.rb
|
160
|
+
- lib/ordlite/models/blob.rb
|
161
|
+
- lib/ordlite/models/forward.rb
|
162
|
+
- lib/ordlite/models/inscribe.rb
|
163
|
+
- lib/ordlite/schema.rb
|
164
|
+
- lib/ordlite/version.rb
|
90
165
|
homepage: https://github.com/ordbase/generative-orc-721
|
91
166
|
licenses:
|
92
167
|
- Public Domain
|