sqlui 0.1.76 → 0.1.77

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: c8a1521fc269ae7ca6ff4686c9697e2b52138a893c8088543a557f99381edb76
4
- data.tar.gz: 963fac5e9aca7948f24d29ab7be3a053c89510c079c5ad4a78de6f7b1b1030e6
3
+ metadata.gz: 813ba5e47c2d4409ff6601fd9974f649f4099da7bc61dc82d2f619313c033cbe
4
+ data.tar.gz: 57e1ebab4287fd3b49f2d6e1cc37009cabc60aba6d3fb6c7b2fed5f3cc107d5f
5
5
  SHA512:
6
- metadata.gz: ce2b404e42b73506ac2acfc4e6bff1b804e08089c9bbf3e4951bae9df4098f5ee7356f978551343c6b724280e9cbef3b0fb7669355fa6a517e6b89a5ef3e76db
7
- data.tar.gz: 062de95c20aca88831dd9789109881a816dd18692feb5e87a6b881c392c406c27c794e83bd132fcd5bc09486f9320d69e26ee1326c804585688b98fa65cd13f2
6
+ metadata.gz: 48a36192980463f3a2ce4ef80b3b74011ee8e42b8d6dd215b8ac8f01f5146682ceca736888c661789c024b57a33bf7e7b771ea10c1f5b33f2d91891689eae5ef
7
+ data.tar.gz: 21ea275d80725c1907ed6d04e3c5d3c83bd84a18fbbfdf56d490f60959b3fb515c84bb219020afc3fd4769add109031c6bba9a6cbd89698116a8cb1ca715019d
data/.release-version CHANGED
@@ -1 +1 @@
1
- 0.1.76
1
+ 0.1.77
@@ -25,10 +25,7 @@ module Github
25
25
  end
26
26
 
27
27
  DEFAULT_MAX_TREE_CACHE_AGE_SECONDS = 60 * 5 # 5 minutes
28
- DEFAULT_MAX_FILE_CACHE_AGE_SECONDS = 60 * 60 * 24 * 7 # 1 week
29
-
30
- MAX_TREE_SIZE = 100
31
- private_constant :MAX_TREE_SIZE
28
+ DEFAULT_MAX_FILE_CACHE_AGE_SECONDS = 60 * 60 * 24 * 365 # 1 year
32
29
 
33
30
  def initialize(access_token:, cache:, logger: Logger.new($stdout))
34
31
  check_non_empty_string(access_token: access_token)
@@ -52,9 +49,8 @@ module Github
52
49
  end
53
50
 
54
51
  response['tree'] = response['tree'].select { |blob| regex.match?(blob['path']) }
55
- raise "trees with more than #{MAX_TREE_SIZE} blobs not supported" if response['tree'].size > MAX_TREE_SIZE
56
-
57
- latch = CountDownLatch.new(response['tree'].size)
52
+ tree_size = response['tree'].size
53
+ latch = CountDownLatch.new(tree_size)
58
54
  response['tree'].each do |blob|
59
55
  TreeClient.thread_pool.post do
60
56
  blob['content'] =
@@ -64,7 +60,7 @@ module Github
64
60
  end
65
61
  end
66
62
 
67
- latch.await(timeout: 20)
63
+ latch.await(timeout: [10, tree_size / 2].max)
68
64
  raise 'failed to load saved files' unless response['tree'].all? { |blob| blob['content'] }
69
65
 
70
66
  Tree.for(owner: owner, repo: repo, ref: ref, tree_response: response)
data/app/server.rb CHANGED
@@ -36,7 +36,7 @@ class Server < Sinatra::Base
36
36
  end
37
37
  end
38
38
 
39
- def self.init_and_run(config, resources_dir, github_cache)
39
+ def self.init_and_run(config, resources_dir)
40
40
  Sqlui.logger.info("Starting SQLUI v#{Version::SQLUI}")
41
41
  Sqlui.logger.info("Airbrake enabled: #{config.airbrake[:server]&.[](:enabled) || false}")
42
42
 
@@ -113,7 +113,23 @@ class Server < Sinatra::Base
113
113
  erb :databases, locals: { config: config, resource_path_map: resource_path_map }
114
114
  end
115
115
 
116
+ github_cache = create_github_cache
116
117
  config.database_configs.each do |database|
118
+ # Prefetch all trees on startup. This should happen before the health endpoint is available.
119
+ if (saved_config = database.saved_config)
120
+ tree_client = Github::TreeClient.new(
121
+ access_token: database.saved_config.token,
122
+ cache: github_cache,
123
+ logger: Sqlui.logger
124
+ )
125
+ tree_client.get_tree(
126
+ owner: saved_config.owner,
127
+ repo: saved_config.repo,
128
+ ref: saved_config.branch,
129
+ regex: saved_config.regex
130
+ )
131
+ end
132
+
117
133
  get "#{config.base_url_path}/#{database.url_path}/?" do
118
134
  redirect "#{database.url_path}/query", 301
119
135
  end
@@ -121,11 +137,6 @@ class Server < Sinatra::Base
121
137
  post "#{config.base_url_path}/#{database.url_path}/metadata" do
122
138
  tree = nil
123
139
  if (saved_config = database.saved_config)
124
- tree_client = Github::TreeClient.new(
125
- access_token: database.saved_config.token,
126
- cache: github_cache,
127
- logger: Sqlui.logger
128
- )
129
140
  tree = tree_client.get_tree(
130
141
  owner: saved_config.owner,
131
142
  repo: saved_config.repo,
@@ -361,7 +372,31 @@ class Server < Sinatra::Base
361
372
  run!
362
373
  end
363
374
 
364
- private
375
+ def self.create_github_cache
376
+ return Github::Cache.new({}, logger: Sqlui.logger) unless ENV['USE_LOCAL_SAVED_FILES']
377
+
378
+ paths = Dir.glob('sql/**/*.sql')
379
+ blobs = paths.map { |path| { 'path' => path, 'sha' => 'foo' } }
380
+ github_cache_hash = {
381
+ 'https://api.github.com/repos/nicholasdower/sqlui/git/trees/master?recursive=true' =>
382
+ Github::Cache::Entry.new(
383
+ {
384
+ 'sha' => 'foo',
385
+ 'truncated' => false,
386
+ 'tree' => blobs
387
+ }, 60 * 60 * 24 * 365
388
+ )
389
+ }
390
+ paths.each do |path|
391
+ github_cache_hash["https://api.github.com/repos/nicholasdower/sqlui/contents/#{path}?ref=foo"] =
392
+ Github::Cache::Entry.new(
393
+ {
394
+ 'content' => Base64.encode64(File.read(path))
395
+ }, 60 * 60 * 24 * 365
396
+ )
397
+ end
398
+ Github::Cache.new(github_cache_hash, logger: Sqlui.logger)
399
+ end
365
400
 
366
401
  def find_selected_queries(full_sql, selection)
367
402
  if selection
data/app/sqlui.rb CHANGED
@@ -28,7 +28,7 @@ class Sqlui
28
28
  end
29
29
 
30
30
  def run
31
- Server.init_and_run(@config, @resources_dir, github_cache)
31
+ Server.init_and_run(@config, @resources_dir)
32
32
  end
33
33
 
34
34
  def self.from_command_line(args)
@@ -42,32 +42,4 @@ class Sqlui
42
42
 
43
43
  Sqlui.new(args[0])
44
44
  end
45
-
46
- private
47
-
48
- def github_cache
49
- return Github::Cache.new({}, logger: Sqlui.logger) unless ENV['USE_LOCAL_SAVED_FILES']
50
-
51
- paths = Dir.glob('sql/friends/*.sql')
52
- blobs = paths.map { |path| { 'path' => path, 'sha' => 'foo' } }
53
- github_cache_hash = {
54
- 'https://api.github.com/repos/nicholasdower/sqlui/git/trees/master?recursive=true' =>
55
- Github::Cache::Entry.new(
56
- {
57
- 'sha' => 'foo',
58
- 'truncated' => false,
59
- 'tree' => blobs
60
- }, 60 * 60 * 24 * 365
61
- )
62
- }
63
- paths.each do |path|
64
- github_cache_hash["https://api.github.com/repos/nicholasdower/sqlui/contents/#{path}?ref=foo"] =
65
- Github::Cache::Entry.new(
66
- {
67
- 'content' => Base64.encode64(File.read(path))
68
- }, 60 * 60 * 24 * 365
69
- )
70
- end
71
- Github::Cache.new(github_cache_hash, logger: Sqlui.logger)
72
- end
73
45
  end