scribelite 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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