twenty-server 0.5.3 → 0.5.5

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: 394570c5ad631e7055dad0bc3b62b022e6ee97de39d28b5aab95613f04924b0c
4
- data.tar.gz: 543f8ff17382dce3574eb18c0fa12508881e54af6427dc3db6a91e625d285f3d
3
+ metadata.gz: '09a7504d2ef036f0463b573bd999ec4df8fa5e32a48bd40e7e91e947e5f1a25d'
4
+ data.tar.gz: 6a0e602227119bf35e1857525994e0b019061bc234a0913fc6c9a58dabfbf1da
5
5
  SHA512:
6
- metadata.gz: 18f4c98db2fb61d9d9d0f8a1b0bcd886629beb7b319f4cbb9019f7d42e4e20487504d35fb1d41fd13d96a31635d2015748ed8b02ab91e436b30f8fb1d2e87cf8
7
- data.tar.gz: 1052e7a9e7517fd6047bde5d61b459f7413e356e239d1b6436e4ee478898adbe7b07f9c2c9bbbf8000ee0995107edce2792ae4d685a467b3b2e4827cafd31334
6
+ metadata.gz: 06e09450ff1212091122d480fcb77c3f6d2c319eed0b998986d541f1c5df730cd67b7a98b861336c6dc195e6e46c1d1f452ec09dc39813a177ab80834831b84b
7
+ data.tar.gz: a3adb49e1dd8132ceebfb0d78638d175a0d0a72fab31d12de7445633328e0a8921b68265d7a8c6bffbb3bc3e51d829db7b062a38ae1c4b17a68e585a3610f0b5
@@ -2,7 +2,7 @@
2
2
 
3
3
  Sequel.migration do
4
4
  up do
5
- default = Twenty::ColorableMixin.random_color
5
+ default = Twenty::Mixin::Colorable.random_color
6
6
  add_column :projects, :color, :string, null: false, default:
7
7
  end
8
8
 
@@ -1,25 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Twenty::Migration
4
- require "sequel/extensions/migration"
4
+ Sequel.extension(:migration)
5
+
5
6
  ##
6
7
  # @return [String]
7
- # Returns the path to twenty's migrations.
8
+ # Returns the path to the migrations directory
8
9
  def self.migrations_path
9
10
  File.join(__dir__, "migration")
10
11
  end
11
12
 
12
13
  ##
13
- # Runs migrations (if neccessary).
14
+ # Run migrations
14
15
  # @return [void]
15
- def self.run!
16
- Sequel::Migrator.run(Twenty.connection, migrations_path)
16
+ def self.run!(options = {})
17
+ Sequel::Migrator.run(Twenty.connection, migrations_path, options)
17
18
  end
18
19
 
19
20
  ##
20
21
  # @return [Boolean]
21
- # Returns true when there are pending migrations.
22
+ # Returns true when there are pending migrations
22
23
  def self.pending_migrations?
23
- Sequel::Migrator.is_current?(Twenty.connection, migrations_path)
24
+ ! Sequel::Migrator.is_current?(Twenty.connection, migrations_path)
24
25
  end
25
26
  end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Twenty::Mixin
4
+ module Colorable
5
+ extend self
6
+
7
+ COLORS = [
8
+ "#222222", "#333333", "#444444", "#555555", "#666666",
9
+ "#777777", "#888888", "#999999", "#AA2222", "#22AA22",
10
+ "#2222AA", "#AA22AA", "#CC9900", "#0099CC", "#9900CC",
11
+ "#FF9900", "#00CC99", "#99CC00", "#CC0099", "#990000",
12
+ "#112233", "#445566", "#778899", "#AA4455", "#5544AA",
13
+ "#88AA44", "#AA88AA", "#CCBB00", "#1155CC", "#9900BB",
14
+ "#DD6600", "#00BBCC", "#CC0099", "#BB3300", "#006688",
15
+ "#993366", "#2200AA", "#557788", "#998877", "#BB4400"
16
+ ]
17
+
18
+ def before_validation
19
+ super if defined?(super)
20
+ set_random_color
21
+ end
22
+
23
+ def random_color
24
+ COLORS.sample
25
+ end
26
+
27
+ private
28
+
29
+ def set_random_color
30
+ return if id
31
+ self.color = random_color
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,3 @@
1
+ module Twenty::Mixin
2
+ require_relative "mixin/colorable"
3
+ end
@@ -1,42 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- class Twenty::Project < Sequel::Model
4
- include Twenty::Model
5
- include Twenty::ColorableMixin
3
+ module Twenty
4
+ class Project < Sequel::Model
5
+ include Model
6
+ include Mixin::Colorable
6
7
 
7
- validates_presence_of :name
8
- validates_presence_of :path
9
- one_to_many :tasks, class_name: "Twenty::Task"
8
+ validates_presence_of :name
9
+ validates_presence_of :path
10
+ one_to_many :tasks, class_name: "Twenty::Task"
10
11
 
11
- ##
12
- # @api private
13
- def validate
14
- super
15
- errors.add(:path, "does not exist on disk") if !path_exist?
16
- errors.add(:path, "is not absolute") if !File.absolute_path?(self[:path])
17
- end
12
+ ##
13
+ # @api private
14
+ def validate
15
+ super
16
+ errors.add(:path, "does not exist on disk") if !path_exist?
17
+ errors.add(:path, "is not absolute") if !File.absolute_path?(self[:path])
18
+ end
18
19
 
19
- ##
20
- # @return [String]
21
- # The path to a project
22
- def path
23
- super&.sub(Dir.home, "~")
24
- end
20
+ ##
21
+ # @return [String]
22
+ # The path to a project
23
+ def path
24
+ super&.sub(Dir.home, "~")
25
+ end
25
26
 
26
- ##
27
- # @return [Boolean]
28
- # Returns true when {#path} exists on disk
29
- def path_exist?
30
- File.exist? File.expand_path(path)
31
- end
27
+ ##
28
+ # @return [Boolean]
29
+ # Returns true when {#path} exists on disk
30
+ def path_exist?
31
+ File.exist? File.expand_path(path)
32
+ end
32
33
 
33
- ##
34
- # @return [Integer]
35
- # Returns the number of open tasks a project has
36
- def open_task_count
37
- @open_task_count ||= Twenty::Task
38
- .where(project_id: id)
39
- .where(Sequel.lit("status IN (0,1,2)"))
40
- .count
34
+ ##
35
+ # @return [Integer]
36
+ # Returns the number of open tasks a project has
37
+ def open_task_count
38
+ @open_task_count ||= Twenty::Task
39
+ .where(project_id: id)
40
+ .where(Sequel.lit("status IN (0,1,2)"))
41
+ .count
42
+ end
41
43
  end
42
44
  end
@@ -6,7 +6,6 @@ module Twenty::Model
6
6
  model.plugin(:timestamps, update_on_create: true)
7
7
  end
8
8
 
9
- require_relative "model/mixin/colorable_mixin"
10
9
  require_relative "model/project"
11
10
  require_relative "model/task"
12
11
  end
data/lib/twenty/server.rb CHANGED
@@ -1,22 +1,49 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Twenty
4
- require "fileutils"
5
- require "sequel"
6
- require_relative "server/path"
4
+ extend Module.new {
5
+ require "tmpdir"
6
+ require "fileutils"
7
+ extend self
8
+ extend FileUtils
7
9
 
8
- ##
9
- # @return [String]
10
- # Returns the location of the default SQLite database.
11
- def self.default_database
12
- @default_database ||= File.join(Path.datadir, "database.sqlite")
13
- end
10
+ ##
11
+ # @return [String]
12
+ # Returns the path for the default SQLite database
13
+ def default_database
14
+ @default_database ||= File.join(datadir, "database.sqlite")
15
+ end
16
+
17
+ ##
18
+ # @return [String]
19
+ # Returns the directory where twenty stores data
20
+ def datadir
21
+ File.join(Dir.home, ".local", "share", "twenty")
22
+ end
23
+
24
+ ##
25
+ # @return [String]
26
+ # Returns the directory where twenty stores temporary data
27
+ def tmpdir
28
+ File.join(Dir.tmpdir, "twenty")
29
+ end
30
+
31
+ ##
32
+ # @return [String]
33
+ # Returns the path to a PID file
34
+ def pid
35
+ File.join(tmpdir, "server.pid")
36
+ end
37
+
38
+ mkdir_p(datadir)
39
+ mkdir_p(tmpdir)
40
+ }
14
41
 
15
42
  ##
16
- # Establishes a database connection.
43
+ # Establishes a database connection
17
44
  #
18
45
  # @param [String] path
19
- # The path to a SQLite3 database file.
46
+ # The path to a SQLite database
20
47
  #
21
48
  # @return [void]
22
49
  def self.establish_connection(path:)
@@ -26,12 +53,17 @@ module Twenty
26
53
  )
27
54
  end
28
55
 
56
+ ##
57
+ # @return [Sequel::Database::SQLite]
58
+ # Returns the connection to a database
29
59
  def self.connection
30
60
  establish_connection unless @connection
31
61
  @connection
32
62
  end
33
63
 
34
- FileUtils.touch(default_database)
64
+ require "sequel"
65
+ require_relative "server/mixin"
66
+ require_relative "server/migration"
35
67
  require_relative "server/graphql"
36
68
  require_relative "server/rack"
37
69
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twenty-server
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
@@ -94,7 +94,8 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '1.35'
97
- description: HTTP server
97
+ description: Provides the server component of twenty. See https://rubygems.org/gems/twenty
98
+ for context.
98
99
  email:
99
100
  - 0x1eef@protonmail.com
100
101
  executables: []
@@ -122,11 +123,11 @@ files:
122
123
  - "./lib/twenty/server/migration/1_create_projects.rb"
123
124
  - "./lib/twenty/server/migration/2_create_tasks.rb"
124
125
  - "./lib/twenty/server/migration/3_add_color_to_projects.rb"
126
+ - "./lib/twenty/server/mixin.rb"
127
+ - "./lib/twenty/server/mixin/colorable.rb"
125
128
  - "./lib/twenty/server/model.rb"
126
- - "./lib/twenty/server/model/mixin/colorable_mixin.rb"
127
129
  - "./lib/twenty/server/model/project.rb"
128
130
  - "./lib/twenty/server/model/task.rb"
129
- - "./lib/twenty/server/path.rb"
130
131
  - "./lib/twenty/server/rack.rb"
131
132
  - "./lib/twenty/server/rack/graphql.rb"
132
133
  - "./share/twenty/server/schema.graphql"
@@ -152,5 +153,5 @@ requirements: []
152
153
  rubygems_version: 3.5.9
153
154
  signing_key:
154
155
  specification_version: 4
155
- summary: HTTP server
156
+ summary: Provides the server component of twenty
156
157
  test_files: []
@@ -1,32 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Twenty::ColorableMixin
4
- extend self
5
-
6
- COLORS = [
7
- "#222222", "#333333", "#444444", "#555555", "#666666",
8
- "#777777", "#888888", "#999999", "#AA2222", "#22AA22",
9
- "#2222AA", "#AA22AA", "#CC9900", "#0099CC", "#9900CC",
10
- "#FF9900", "#00CC99", "#99CC00", "#CC0099", "#990000",
11
- "#112233", "#445566", "#778899", "#AA4455", "#5544AA",
12
- "#88AA44", "#AA88AA", "#CCBB00", "#1155CC", "#9900BB",
13
- "#DD6600", "#00BBCC", "#CC0099", "#BB3300", "#006688",
14
- "#993366", "#2200AA", "#557788", "#998877", "#BB4400"
15
- ]
16
-
17
- def before_validation
18
- super if defined?(super)
19
- set_random_color
20
- end
21
-
22
- def random_color
23
- COLORS.sample
24
- end
25
-
26
- private
27
-
28
- def set_random_color
29
- return if id
30
- self.color = random_color
31
- end
32
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Twenty::Path
4
- require "tmpdir"
5
- extend self
6
-
7
- ##
8
- # @return [String]
9
- # Returns the directory where twenty stores persistent data.
10
- def datadir
11
- File.join(Dir.home, ".local", "share", "twenty")
12
- end
13
-
14
- ##
15
- # @return [String]
16
- # Returns the directory where twenty stores temporary data.
17
- def tmpdir
18
- File.join(Dir.tmpdir, "twenty")
19
- end
20
-
21
- ##
22
- # @return [String]
23
- # Returns the file where twenty can write the PID of
24
- # a web server running in the background.
25
- def pidfile
26
- File.join(tmpdir, "server.pid")
27
- end
28
-
29
- FileUtils.mkdir_p(datadir)
30
- FileUtils.mkdir_p(tmpdir)
31
- end