scribelite 0.1.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f774ffec5b1c7a02d7ff82d92e7dea2ca83aa918f498fb2d24969870e26d819
4
- data.tar.gz: cf9faa2257cb17c595a01685f2dc1b97d4d6fb315f7e65a8e2b6b9663d59872d
3
+ metadata.gz: '0608ffa940a6f65b4432a6e8e494ec2213e20a6fb661e15eafb9f0408f1175be'
4
+ data.tar.gz: 5b019fbe73890c1b20a5c4106a617e2c573431e805b47825fb056f7bd50449aa
5
5
  SHA512:
6
- metadata.gz: 272471a546baa300468d4dbc0558297930c12f20fd6447366dbd5b02bb6d34ff2aec04090731abcf7259447a389a1a0a20350c2c26659b95e2b9752808479f3d
7
- data.tar.gz: 517b655428b5a043851c3bc0df41689648a9ca51839593d2f3a0284845a207e8570da852d36a165ef65fb6a6892ef1a0a5004490f4816823dd93d13cd977c6bb
6
+ metadata.gz: 3a363643f683a32c1ccbd04448d790b6582f5ccc7d8d3176ab65506ff92d826a5b54e37b41add46bb8c8b577a8f76aa9d8ee7800a7d946aa7cf5ce9802fb283b
7
+ data.tar.gz: 491db0258ff4a4dc27974f9e3e8e8147a9437690dfdd2c30bf8d81b8710aee0f7ee4a119cd3657b6d48f1cc3399570e4787ef9fbdc87d17ec4f4115acb79d1e7
data/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.1.0
1
+ ### 0.2.0
2
2
  ### 0.0.1 / 2023-11-21
3
3
 
4
4
  * Everything is new. First release
data/Manifest.txt CHANGED
@@ -3,8 +3,8 @@ Manifest.txt
3
3
  README.md
4
4
  Rakefile
5
5
  lib/scribelite.rb
6
- lib/scribelite/models/calldata.rb
7
6
  lib/scribelite/models/forward.rb
8
- lib/scribelite/models/inscribe.rb
7
+ lib/scribelite/models/scribe.rb
8
+ lib/scribelite/models/tx.rb
9
9
  lib/scribelite/schema.rb
10
10
  lib/scribelite/version.rb
data/README.md CHANGED
@@ -19,11 +19,89 @@ See [Introducing Ethscriptions - A new way of creating and sharing digital artif
19
19
 
20
20
  ## Usage
21
21
 
22
+ The work-in-progess database schema looks like:
23
+
24
+ ``` ruby
25
+ ActiveRecord::Schema.define do
26
+
27
+ create_table :scribes, :id => :string do |t|
28
+ t.integer :num, null: false, index: { unique: true, name: 'scribe_nums' }
29
+ t.integer :bytes
30
+ t.string :content_type
31
+ ## add allow duplicate opt-in protocol flag e.g. esip6
32
+ t.boolean :duplicate ## allows duplicates flag
33
+ t.boolean :flagged, null: false, default: false ## censored flag / removed on request
34
+ ## move sha to tx - why? why not?
35
+ t.string :sha, null: false ## sha hash as hexstring (but no leading 0)
36
+ end
37
+
38
+ create_table :txs, :id => :string do |t|
39
+ t.binary :data # , null: false
40
+ t.datetime :date, null: false
41
+ t.integer :block, null: false
42
+ t.integer :idx, null: false ## transaction index (number)
43
+
44
+ t.string :from, null: false
45
+ t.string :to, null: false
46
+
47
+ t.integer :fee
48
+ t.integer :value
49
+ end
50
+ end
51
+ ```
52
+
53
+
54
+ and to setup use it like:
55
+
56
+ ``` ruby
57
+ require 'scribelite'
58
+
59
+ ScribeDb.connect( adapter: 'sqlite3',
60
+ database: './scribe.db' )
61
+
62
+ ScribeDb.create_all ## build schema
63
+ ```
64
+
65
+
66
+ and to query use it like:
67
+
68
+ ``` ruby
69
+ require 'scribelite'
70
+
71
+ ScribeDb.open( './scribe.db' )
72
+
73
+ puts
74
+ puts " #{Scribe.count} scribe(s)"
75
+ puts " #{Tx.count} tx(s)"
76
+
77
+
78
+ ## how many flagged in top 100?
79
+ limit = 100
80
+
81
+ flagged_count = Scribe.order( :num ).limit(limit).where( flagged: true ).count
82
+ pp flagged_count #=> 75 !!!!!!!!!
83
+ unflagged_count = Scribe.order( :num).limit(limit).where( flagged: false ).count
84
+ pp unflagged_count #=> 25
85
+
86
+
87
+ Scribe.order( :num ).limit(limit).each do |scribe|
88
+ if scribe.flagged?
89
+ print " xx "
90
+ else
91
+ print "==> "
92
+ end
93
+ print "#{scribe.num} / #{scribe.content_type} - #{scribe.tx.date} @ #{scribe.tx.block}"
94
+ print "\n"
95
+ end
96
+ ```
97
+
98
+
22
99
  To be continued...
23
100
 
24
101
 
25
102
 
26
103
 
104
+
27
105
  ## Bonus - More Blockchain (Crypto) Tools, Libraries & Scripts In Ruby
28
106
 
29
107
  See [**/blockchain**](https://github.com/rubycocos/blockchain)
data/Rakefile CHANGED
@@ -18,7 +18,8 @@ Hoe.spec 'scribelite' do
18
18
  self.history_file = 'CHANGELOG.md'
19
19
 
20
20
  self.extra_deps = [
21
- ['ethscribe'],
21
+ ['ethscribe'],
22
+ ['calldata'], ## todo - check if included via ethscribe in the future?
22
23
  ['activerecord'],
23
24
  ['activerecord-utils'],
24
25
  ['logutils'],
@@ -10,8 +10,8 @@ module Model
10
10
  Prop = ConfDb::Model::Prop
11
11
 
12
12
 
13
- class Inscribe < ActiveRecord::Base ; end
14
- class Calldata < ActiveRecord::Base ; end
13
+ class Scribe < ActiveRecord::Base ; end
14
+ class Tx < ActiveRecord::Base ; end
15
15
 
16
16
 
17
17
  end # module Model
@@ -2,8 +2,8 @@
2
2
  module ScribeDb
3
3
  module Model
4
4
 
5
- class Inscribe < ActiveRecord::Base
6
- has_one :calldata, foreign_key: 'id'
5
+ class Scribe < ActiveRecord::Base
6
+ has_one :tx, foreign_key: 'id'
7
7
 
8
8
  ## convernience helper
9
9
  ## forward to blob.content
@@ -182,7 +182,7 @@ def export( path=export_path )
182
182
  end
183
183
  =end
184
184
 
185
- end # class Inscribe
185
+ end # class Scribe
186
186
 
187
187
  end # module Model
188
188
  end # module ScribeDb
@@ -2,17 +2,16 @@
2
2
  module ScribeDb
3
3
  module Model
4
4
 
5
- class Calldata < ActiveRecord::Base
6
- self.table_name = 'calldatas' ## check if infers data? why? why not?
5
+ class Tx < ActiveRecord::Base
6
+ self.table_name = 'txs' ## note auto-infers txes change to txs
7
7
 
8
8
  belongs_to :inscribe, foreign_key: 'id'
9
-
10
9
  =begin
11
10
  def text
12
11
  content.force_encoding(Encoding::UTF_8)
13
12
  end
14
13
  =end
15
- end # class Calldata
14
+ end # class Tx
16
15
 
17
16
  end # module Model
18
17
  end # module ScribeDb
@@ -8,15 +8,15 @@ def up
8
8
 
9
9
  ActiveRecord::Schema.define do
10
10
 
11
- create_table :inscribes, :id => :string do |t|
11
+ create_table :scribes, :id => :string do |t|
12
12
  ## "id": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5ci0",
13
13
  ## note: change to uuid (universally unique id) - why? why not?
14
14
  ## id gets used by row_id (internal orm db machinery) and is int
15
- ## t.string :uuid, null: false, index: { unique: true, name: 'inscribe_uuids' }
15
+ ## t.string :uuid, null: false, index: { unique: true, name: 'scribe_uuids' }
16
16
 
17
17
  ## "title": "Inscription 10371414",
18
18
  ## note: use num/no. from title only - why? why not?
19
- t.integer :num, null: false, index: { unique: true, name: 'inscribe_nums' }
19
+ t.integer :num, null: false, index: { unique: true, name: 'scribe_nums' }
20
20
 
21
21
  ## "content length": "85 bytes",
22
22
  ## note: extract bytes as integer!!!
@@ -25,11 +25,14 @@ create_table :inscribes, :id => :string do |t|
25
25
  ## "content type": "text/plain;charset=utf-8",
26
26
  ## note: make sure always lower/down case!!!
27
27
  t.string :content_type
28
-
29
-
28
+
30
29
  ## add allow duplicate opt-in protocol flag e.g. esip6
31
- ## t.boolean :duplicate -
32
-
30
+ t.boolean :duplicate ## allows duplicates flag - make duplicate the default - why? why not?
31
+ t.boolean :flagged, null: false, default: false ## censored flag / removed on request
32
+
33
+ ## move sha to tx - why? why not?
34
+ t.string :sha # , null: false ## sha hash as hexstring
35
+
33
36
  ## timestamp last
34
37
  t.timestamps
35
38
  end
@@ -37,14 +40,13 @@ end
37
40
 
38
41
  ## change to tx/txs or txn/txns - why? why not?
39
42
 
40
- create_table :calldatas, :id => :string do |t|
43
+ create_table :txs, :id => :string do |t|
41
44
  ## "id": "0a3a4dbf6630338bc4df8e36bd081f8f7d2dee9441131cb03a18d43eb4882d5ci0",
42
45
  ## note: change to uuid (universally unique id) - why? why not?
43
46
  ## id gets used by row_id (internal orm db machinery) and is int
44
47
  ## t.string :id, null: false, index: { unique: true, name: 'blob_uuids' }
45
48
 
46
- t.binary :data # , null: false
47
- t.string :sha # , null: false ## sha hash as hexstring
49
+ t.binary :data # , null: false
48
50
 
49
51
  ## "timestamp": "2023-06-01 05:00:57 UTC"
50
52
  ## or use date_utc ???
@@ -52,19 +54,16 @@ create_table :calldatas, :id => :string do |t|
52
54
  t.datetime :date, null: false
53
55
 
54
56
  t.integer :block, null: false
55
- t.integer :fee
56
- t.integer :value
57
+ t.integer :idx, null: false ## transaction index (number)
57
58
 
58
- ###
59
- ## "address": "bc1p3h4eecuxjj2g72sq38gyva732866u5w29lhxgeqfe6c0sg8xmagsuau63k",
60
- ## is this minter/inscriber addr???
61
- ## change to minter?? or such - why? why not?
62
- ## creator
63
59
  t.string :from, null: false
60
+ t.string :to, null: false
64
61
 
65
- ## add to address too - why? why not?
66
- t.string :to
67
- ## timestamp last
62
+ t.integer :fee
63
+ t.integer :value
64
+
65
+
66
+ ## timestamp last
68
67
  t.timestamps
69
68
  end
70
69
 
@@ -1,7 +1,7 @@
1
1
 
2
2
  module Scribelite
3
3
  MAJOR = 0 ## todo: namespace inside version or something - why? why not??
4
- MINOR = 1
4
+ MINOR = 2
5
5
  PATCH = 0
6
6
  VERSION = [MAJOR,MINOR,PATCH].join('.')
7
7
 
data/lib/scribelite.rb CHANGED
@@ -1,10 +1,11 @@
1
1
 
2
2
  # core and stlibs
3
3
  require 'ethscribe' ## will pull-in cocos & friends
4
-
4
+ require 'calldata'
5
5
 
6
6
 
7
7
  require 'logger' # Note: use for ActiveRecord::Base.logger -- remove/replace later w/ LogUtils::Logger ???
8
+ require 'date' ## check if date & datetime required ??
8
9
 
9
10
 
10
11
  # 3rd party gems / libs
@@ -27,8 +28,8 @@ require_relative 'scribelite/version' # always goes first
27
28
 
28
29
  require_relative 'scribelite/models/forward'
29
30
 
30
- require_relative 'scribelite/models/inscribe'
31
- require_relative 'scribelite/models/calldata'
31
+ require_relative 'scribelite/models/scribe'
32
+ require_relative 'scribelite/models/tx'
32
33
 
33
34
 
34
35
  require_relative 'scribelite/schema'
@@ -66,7 +67,7 @@ module ScribeDb
66
67
  ConfDb.create # add props table
67
68
  end
68
69
 
69
- unless ScribeDb::Model::Inscribe.table_exists?
70
+ unless ScribeDb::Model::Scribe.table_exists?
70
71
  ScribeDb.create
71
72
  end
72
73
  end # method auto_migrate!
@@ -136,8 +137,8 @@ end # module ScribeDb
136
137
 
137
138
 
138
139
  ## add convenience helpers
139
- Inscribe = ScribeDb::Model::Inscribe
140
- Calldata = ScribeDb::Model::Calldata
140
+ Scribe = ScribeDb::Model::Scribe
141
+ Tx = ScribeDb::Model::Tx
141
142
 
142
143
 
143
144
  # say hello
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scribelite
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerald Bauer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-11-21 00:00:00.000000000 Z
11
+ date: 2023-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ethscribe
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: calldata
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: activerecord
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -171,9 +185,9 @@ files:
171
185
  - README.md
172
186
  - Rakefile
173
187
  - lib/scribelite.rb
174
- - lib/scribelite/models/calldata.rb
175
188
  - lib/scribelite/models/forward.rb
176
- - lib/scribelite/models/inscribe.rb
189
+ - lib/scribelite/models/scribe.rb
190
+ - lib/scribelite/models/tx.rb
177
191
  - lib/scribelite/schema.rb
178
192
  - lib/scribelite/version.rb
179
193
  homepage: https://github.com/s6ruby/rubidity