twenty-backend 0.1.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. metadata +2 -36
  3. data/.bundle/config +0 -3
  4. data/.rubocop.yml +0 -34
  5. data/Gemfile +0 -3
  6. data/Rakefile.rb +0 -12
  7. data/lib/twenty-backend/graphql/input/task_input.rb +0 -9
  8. data/lib/twenty-backend/graphql/input.rb +0 -4
  9. data/lib/twenty-backend/graphql/mutation/complete_task.rb +0 -15
  10. data/lib/twenty-backend/graphql/mutation/create_task.rb +0 -13
  11. data/lib/twenty-backend/graphql/mutation/destroy_task.rb +0 -15
  12. data/lib/twenty-backend/graphql/mutation/set_random_project_color.rb +0 -17
  13. data/lib/twenty-backend/graphql/mutation/update_task.rb +0 -15
  14. data/lib/twenty-backend/graphql/mutation.rb +0 -5
  15. data/lib/twenty-backend/graphql/schema.rb +0 -6
  16. data/lib/twenty-backend/graphql/type/mutation.rb +0 -14
  17. data/lib/twenty-backend/graphql/type/project.rb +0 -10
  18. data/lib/twenty-backend/graphql/type/query.rb +0 -27
  19. data/lib/twenty-backend/graphql/type/task.rb +0 -15
  20. data/lib/twenty-backend/graphql/type/task_status.rb +0 -8
  21. data/lib/twenty-backend/graphql/type.rb +0 -10
  22. data/lib/twenty-backend/graphql.rb +0 -7
  23. data/lib/twenty-backend/migration/1_create_projects.rb +0 -16
  24. data/lib/twenty-backend/migration/2_create_tasks.rb +0 -17
  25. data/lib/twenty-backend/migration/3_add_color_to_projects.rb +0 -10
  26. data/lib/twenty-backend/migration.rb +0 -34
  27. data/lib/twenty-backend/model/mixin/colorable_mixin.rb +0 -28
  28. data/lib/twenty-backend/model/project.rb +0 -22
  29. data/lib/twenty-backend/model/task.rb +0 -18
  30. data/lib/twenty-backend/model.rb +0 -7
  31. data/lib/twenty-backend/servlet/graphql.rb +0 -15
  32. data/lib/twenty-backend/servlet/mixin/server_mixin.rb +0 -27
  33. data/lib/twenty-backend/servlet.rb +0 -12
  34. data/lib/twenty-backend.rb +0 -55
  35. data/share/twenty-backend/schema.graphql +0 -91
  36. data/twenty-backend.gemspec +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e542a39b0f28686ecebc793a71cf5a0ebc0906e82343a4dbf07438cef3b3b962
4
- data.tar.gz: 6d1ed96207eb078d8432a65f339fd4095eec81838e4ec697d47294f0632cf45e
3
+ metadata.gz: 460d4700d23e22998262bdd10fa5a523e8b6f2e8f99572c1ef8bc201274d2281
4
+ data.tar.gz: 35a38614c9040748fb90f4716b1127871f29bb0472e02e4650f65d6a19ae0ae0
5
5
  SHA512:
6
- metadata.gz: 4666ad8f846373943ac508d4d4edccd231b7825af18b58b0c14566943d0281d4967f85ec0d0760d1c5d1c2cd0989359650f2480388800dbed3aaeb2cc65ab0ee
7
- data.tar.gz: c4214b4df047e114b2be519156530f391bc1dcdc5e0ad193a93b8f68e2034f9b3a49b9c5eb943f781251d82826d901e741e16d78dd3eca5463a13d2647722ef5
6
+ metadata.gz: 9db5cdbe663224164c31f27f97e84e716be58d2c0adec372ab4418b12a6f32340234150d9f7e07e5e59028f2f04d1237580b18717eea35a907e1091d95b9f2c1
7
+ data.tar.gz: 30e85b22424284b8078b1477cae30bdde834d2ed1e4a567b29f2263af1d7a7c04ee643557dea82f54e1df7747fc6b29ba7f724718367cce5606c004825bffc19
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twenty-backend
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - '0x1eef'
@@ -114,41 +114,7 @@ email:
114
114
  executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
117
- files:
118
- - ".bundle/config"
119
- - ".rubocop.yml"
120
- - Gemfile
121
- - Rakefile.rb
122
- - lib/twenty-backend.rb
123
- - lib/twenty-backend/graphql.rb
124
- - lib/twenty-backend/graphql/input.rb
125
- - lib/twenty-backend/graphql/input/task_input.rb
126
- - lib/twenty-backend/graphql/mutation.rb
127
- - lib/twenty-backend/graphql/mutation/complete_task.rb
128
- - lib/twenty-backend/graphql/mutation/create_task.rb
129
- - lib/twenty-backend/graphql/mutation/destroy_task.rb
130
- - lib/twenty-backend/graphql/mutation/set_random_project_color.rb
131
- - lib/twenty-backend/graphql/mutation/update_task.rb
132
- - lib/twenty-backend/graphql/schema.rb
133
- - lib/twenty-backend/graphql/type.rb
134
- - lib/twenty-backend/graphql/type/mutation.rb
135
- - lib/twenty-backend/graphql/type/project.rb
136
- - lib/twenty-backend/graphql/type/query.rb
137
- - lib/twenty-backend/graphql/type/task.rb
138
- - lib/twenty-backend/graphql/type/task_status.rb
139
- - lib/twenty-backend/migration.rb
140
- - lib/twenty-backend/migration/1_create_projects.rb
141
- - lib/twenty-backend/migration/2_create_tasks.rb
142
- - lib/twenty-backend/migration/3_add_color_to_projects.rb
143
- - lib/twenty-backend/model.rb
144
- - lib/twenty-backend/model/mixin/colorable_mixin.rb
145
- - lib/twenty-backend/model/project.rb
146
- - lib/twenty-backend/model/task.rb
147
- - lib/twenty-backend/servlet.rb
148
- - lib/twenty-backend/servlet/graphql.rb
149
- - lib/twenty-backend/servlet/mixin/server_mixin.rb
150
- - share/twenty-backend/schema.graphql
151
- - twenty-backend.gemspec
117
+ files: []
152
118
  homepage: https://github.com/0x1eef/twenty#readme
153
119
  licenses:
154
120
  - 0BSD
data/.bundle/config DELETED
@@ -1,3 +0,0 @@
1
- ---
2
- BUNDLE_PATH: ".gems"
3
- BUNDLE_BUILD__SQLITE3: "--enable-system-libraries"
data/.rubocop.yml DELETED
@@ -1,34 +0,0 @@
1
- ##
2
- # Plugins
3
- require:
4
- - standard
5
-
6
- ##
7
- # Defaults: standard-rb
8
- inherit_gem:
9
- standard: config/base.yml
10
-
11
- ##
12
- # All cops
13
- AllCops:
14
- TargetRubyVersion: 3.2
15
- Include:
16
- - lib/*.rb
17
- - lib/**/*.rb
18
- - test/*_test.rb
19
-
20
- ##
21
- # Enabled
22
- Style/FrozenStringLiteralComment:
23
- Enabled: true
24
-
25
- ##
26
- # Disabled
27
- Layout/ArgumentAlignment:
28
- Enabled: false
29
- Layout/MultilineMethodCallIndentation:
30
- Enabled: false
31
- Layout/EmptyLineBetweenDefs:
32
- Enabled: false
33
- Style/TrivialAccessors:
34
- Enabled: false
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
- source "https://rubygems.org"
3
- gemspec
data/Rakefile.rb DELETED
@@ -1,12 +0,0 @@
1
- require "bundler/setup"
2
- require "fileutils"
3
-
4
- namespace :schema do
5
- desc "Generate share/twenty-backend/schema.graphql"
6
- task :regen do
7
- require "twenty-backend"
8
- schema = File.join(__dir__, "share", "twenty-backend", "schema.graphql")
9
- FileUtils.mkdir_p File.dirname(schema)
10
- File.binwrite schema, Twenty::GraphQL::Schema.to_definition
11
- end
12
- end
@@ -1,9 +0,0 @@
1
- module Twenty::GraphQL::Input
2
- class TaskInput < GraphQL::Schema::InputObject
3
- require_relative "../type/task_status"
4
- argument :title, String, required: false
5
- argument :content, String, required: false
6
- argument :project_id, Int, required: false
7
- argument :status, Twenty::GraphQL::Type::TaskStatus, required: false
8
- end
9
- end
@@ -1,4 +0,0 @@
1
- module Twenty::GraphQL::Input
2
- include GraphQL::Types
3
- require_relative "input/task_input"
4
- end
@@ -1,15 +0,0 @@
1
- module Twenty::GraphQL::Mutation
2
- class CompleteTask < GraphQL::Schema::Mutation
3
- argument :task_id, Int
4
- field :ok, Boolean
5
- field :errors, [String]
6
-
7
- def resolve(task_id:)
8
- task = Twenty::Task.find(task_id)
9
- task.update!(status: :complete)
10
- {ok: true, errors: []}
11
- rescue => ex
12
- {ok: false, errors: [ex.message]}
13
- end
14
- end
15
- end
@@ -1,13 +0,0 @@
1
- module Twenty::GraphQL::Mutation
2
- class CreateTask < GraphQL::Schema::Mutation
3
- field :errors, [String], null: false
4
- argument :input, Twenty::GraphQL::Input::TaskInput
5
-
6
- def resolve(input:)
7
- Twenty::Task.new(input.to_h).save!
8
- {"errors" => []}
9
- rescue => ex
10
- {"errors" => [ex.message]}
11
- end
12
- end
13
- end
@@ -1,15 +0,0 @@
1
- module Twenty::GraphQL::Mutation
2
- class DestroyTask < GraphQL::Schema::Mutation
3
- argument :task_id, Int
4
- field :ok, Boolean
5
- field :errors, [String]
6
-
7
- def resolve(task_id:)
8
- task = Twenty::Task.find(task_id)
9
- task.destroy!
10
- {ok: true, errors: []}
11
- rescue => ex
12
- {ok: false, errors: [ex.message]}
13
- end
14
- end
15
- end
@@ -1,17 +0,0 @@
1
- module Twenty::GraphQL::Mutation
2
- class SetRandomProjectColor < ::GraphQL::Schema::Mutation
3
- require_relative "../type/project"
4
- argument :project_id, Int, required: true
5
-
6
- field :errors, [String], null: false
7
- field :project, Twenty::GraphQL::Type::Project, null: true
8
-
9
- def resolve(project_id:)
10
- project = Twenty::Project.find(project_id)
11
- project.update!(color: project.random_color)
12
- {errors: [], project:}
13
- rescue => ex
14
- {errors: [ex.message]}
15
- end
16
- end
17
- end
@@ -1,15 +0,0 @@
1
- module Twenty::GraphQL::Mutation
2
- class UpdateTask < GraphQL::Schema::Mutation
3
- field :errors, [String], null: false
4
- argument :task_id, Int
5
- argument :input, Twenty::GraphQL::Input::TaskInput
6
-
7
- def resolve(task_id:, input:)
8
- task = Twenty::Task.find_by(id: task_id)
9
- task.update!(input.to_h)
10
- {"errors" => []}
11
- rescue => ex
12
- {"errors" => [ex.message]}
13
- end
14
- end
15
- end
@@ -1,5 +0,0 @@
1
- module Twenty::GraphQL
2
- module Mutation
3
- require_relative "mutation/destroy_task"
4
- end
5
- end
@@ -1,6 +0,0 @@
1
- module Twenty::GraphQL
2
- class Schema < GraphQL::Schema
3
- query Type::Query
4
- mutation Type::Mutation
5
- end
6
- end
@@ -1,14 +0,0 @@
1
- module Twenty::GraphQL::Type
2
- class Mutation < GraphQL::Schema::Object
3
- require_relative "../mutation/destroy_task"
4
- require_relative "../mutation/complete_task"
5
- require_relative "../mutation/create_task"
6
- require_relative "../mutation/update_task"
7
- require_relative "../mutation/set_random_project_color"
8
- field :destroy_task, mutation: Twenty::GraphQL::Mutation::DestroyTask
9
- field :complete_task, mutation: Twenty::GraphQL::Mutation::CompleteTask
10
- field :create_task, mutation: Twenty::GraphQL::Mutation::CreateTask
11
- field :update_task, mutation: Twenty::GraphQL::Mutation::UpdateTask
12
- field :set_random_project_color, mutation: Twenty::GraphQL::Mutation::SetRandomProjectColor
13
- end
14
- end
@@ -1,10 +0,0 @@
1
- module Twenty::GraphQL::Type
2
- class Project < GraphQL::Schema::Object
3
- require_relative "task"
4
- field :id, Int, null: false
5
- field :name, String, null: false
6
- field :path, String, null: false
7
- field :color, String, null: false
8
- field :tasks, [Task], null: false
9
- end
10
- end
@@ -1,27 +0,0 @@
1
- module Twenty::GraphQL::Type
2
- class Query < GraphQL::Schema::Object
3
- field :find_task, Task, null: true do
4
- argument :task_id, Int
5
- end
6
- field :tasks, [Task], null: false do
7
- argument :status, TaskStatus
8
- argument :project_id, Int, required: false
9
- end
10
- field :projects, [Project], null: false
11
-
12
- def find_task(task_id:)
13
- Twenty::Task.find_by(id: task_id)
14
- end
15
-
16
- def tasks(status:, project_id: nil)
17
- tasks = Twenty::Task
18
- .where(status:)
19
- .order(updated_at: :desc)
20
- project_id ? tasks.where(project_id:) : tasks
21
- end
22
-
23
- def projects
24
- Twenty::Project.all
25
- end
26
- end
27
- end
@@ -1,15 +0,0 @@
1
- module Twenty::GraphQL::Type
2
- class Task < GraphQL::Schema::Object
3
- require_relative "project"
4
- field :id, Int, null: false
5
- field :title, String, null: false
6
- field :status, TaskStatus, null: false
7
- field :content, String, null: false
8
- field :project, Project, null: false
9
- field :updated_at, GraphQL::Types::ISO8601DateTime, null: false
10
- field :is_ready, Boolean, null: false, method: :ready?
11
- field :is_backlogged, Boolean, null: false, method: :backlog?
12
- field :is_complete, Boolean, null: false, method: :complete?
13
- field :in_progress, Boolean, null: false, method: :in_progress?
14
- end
15
- end
@@ -1,8 +0,0 @@
1
- module Twenty::GraphQL::Type
2
- class TaskStatus < GraphQL::Schema::Enum
3
- value :backlog
4
- value :ready
5
- value :in_progress
6
- value :complete
7
- end
8
- end
@@ -1,10 +0,0 @@
1
- module Twenty::GraphQL
2
- module Type
3
- include ::GraphQL::Types
4
- end
5
- require_relative "type/task_status"
6
- require_relative "type/project"
7
- require_relative "type/task"
8
- require_relative "type/query"
9
- require_relative "type/mutation"
10
- end
@@ -1,7 +0,0 @@
1
- module Twenty::GraphQL
2
- require "graphql"
3
- require_relative "graphql/input"
4
- require_relative "graphql/type"
5
- require_relative "graphql/mutation"
6
- require_relative "graphql/schema"
7
- end
@@ -1,16 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class CreateProjects < ActiveRecord::Migration[7.1]
4
- def up
5
- create_table(:projects) do |t|
6
- t.string :name, null: false
7
- t.string :path, null: false
8
- t.timestamps
9
- end
10
- add_index :projects, [:name, :path], unique: true
11
- end
12
-
13
- def down
14
- drop_table(:projects)
15
- end
16
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class CreateTasks < ActiveRecord::Migration[7.1]
4
- def up
5
- create_table(:tasks) do |t|
6
- t.string :title, null: false
7
- t.text :content, null: false
8
- t.integer :status, null: false, default: 0
9
- t.belongs_to :project, null: false
10
- t.timestamps
11
- end
12
- end
13
-
14
- def down
15
- drop_table(:tasks)
16
- end
17
- end
@@ -1,10 +0,0 @@
1
- class AddColorToProjects < ActiveRecord::Migration[7.1]
2
- def up
3
- default = Twenty::ColorableMixin.random_color
4
- add_column :projects, :color, :string, null: false, default:
5
- end
6
-
7
- def down
8
- drop_column :projects, :color
9
- end
10
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Twenty::Migration
4
- ##
5
- # @return [String]
6
- # Returns the path to twenty's migrations.
7
- def self.migrations_path
8
- [File.join(__dir__, "migration")]
9
- end
10
-
11
- ##
12
- # Runs migrations (if neccessary).
13
- # @return [void]
14
- def self.run!
15
- context.migrate
16
- end
17
- ActiveRecord.timestamped_migrations = false
18
-
19
- ##
20
- # @return [Boolean]
21
- # Returns true when there are pending migrations.
22
- def self.pending_migrations?
23
- context.open.pending_migrations.any?
24
- end
25
-
26
- ##
27
- # @return [ActiveRecord::MigrationContext]
28
- # Returns an instance of
29
- # {ActiveRecord::MigrationContext ActiveRecord::MigrationContext}.
30
- def self.context
31
- @context ||= ActiveRecord::MigrationContext.new(migrations_path)
32
- end
33
- private_class_method :context
34
- end
@@ -1,28 +0,0 @@
1
- module Twenty::ColorableMixin
2
- extend self
3
-
4
- COLORS = [
5
- '#222222', '#333333', '#444444', '#555555', '#666666',
6
- '#777777', '#888888', '#999999', '#AA2222', '#22AA22',
7
- '#2222AA', '#AA22AA', '#CC9900', '#0099CC', '#9900CC',
8
- '#FF9900', '#00CC99', '#99CC00', '#CC0099', '#990000',
9
- '#112233', '#445566', '#778899', '#AA4455', '#5544AA',
10
- '#88AA44', '#AA88AA', '#CCBB00', '#1155CC', '#9900BB',
11
- '#DD6600', '#00BBCC', '#CC0099', '#BB3300', '#006688',
12
- '#993366', '#2200AA', '#557788', '#998877', '#BB4400'
13
- ]
14
-
15
- def self.included(klass)
16
- klass.before_validation :set_random_color, on: :create
17
- end
18
-
19
- def random_color
20
- COLORS.sample
21
- end
22
-
23
- private
24
-
25
- def set_random_color
26
- self.color = random_color
27
- end
28
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Twenty::Project < Twenty::Model
4
- include Twenty::ColorableMixin
5
- self.table_name = "projects"
6
-
7
- ##
8
- # Validations
9
- validates :name, presence: true
10
- validates :path, presence: true
11
-
12
- ##
13
- # Associations
14
- has_many :tasks, class_name: "Twenty::Task"
15
-
16
- ##
17
- # @return [String]
18
- # The path to a project.
19
- def path
20
- super&.sub(Dir.home, "~")
21
- end
22
- end
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Twenty::Task < Twenty::Model
4
- self.table_name = "tasks"
5
-
6
- STATUS = {backlog: 0, ready: 1, in_progress: 2, complete: 3}
7
- enum :status, STATUS, default: :backlog
8
-
9
- ##
10
- # Validations
11
- validates :title, presence: true
12
- validates :content, presence: true
13
- validates :project, presence: true
14
-
15
- ##
16
- # Associations
17
- belongs_to :project, class_name: "Twenty::Project"
18
- end
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Twenty::Model < ActiveRecord::Base
4
- require_relative "model/mixin/colorable_mixin"
5
- require_relative "model/project"
6
- require_relative "model/task"
7
- end
@@ -1,15 +0,0 @@
1
- class Twenty::Servlet::GraphQL < Twenty::Servlet
2
- ##
3
- # POST /servlet/graphql/
4
- def do_POST(req, res)
5
- params = JSON.parse(req.body)
6
- result = Twenty::GraphQL::Schema.execute(
7
- params['query'],
8
- variables: params['variables'],
9
- context: {}
10
- )
11
- res['content_type'] = 'application/json'
12
- res.status = 200
13
- res.body = result.to_json
14
- end
15
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Twenty::Servlet::ServerMixin
4
- ##
5
- # @param [Hash] options
6
- # Server options that take precedence over
7
- # {ServerMixin#server_options ServerMixin#server_options}.
8
- #
9
- # @return [WEBrick::HTTPServer]
10
- # Returns an instance of WEBrick::HTTPServer.
11
- def server(options = {})
12
- server = WEBrick::HTTPServer.new server_options.merge(options)
13
- server.mount "/graphql", Twenty::Servlet::GraphQL
14
- server
15
- end
16
-
17
- ##
18
- # @return [Hash<Symbol, String>]
19
- # The default server options given to WEBrick::HTTPServer.new.
20
- def server_options
21
- {
22
- DocumentRoot: Twenty.build,
23
- BindAddress: "127.0.0.1",
24
- Port: 2020
25
- }
26
- end
27
- end
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- class Twenty::Servlet < WEBrick::HTTPServlet::AbstractServlet
4
- ##
5
- # servlets
6
- require_relative "servlet/graphql"
7
-
8
- ##
9
- # mixins
10
- require_relative "servlet/mixin/server_mixin"
11
- extend ServerMixin
12
- end
@@ -1,55 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Twenty
4
- require "fileutils"
5
- require "webrick"
6
- require "active_record"
7
- require_relative "twenty-backend/graphql"
8
- require_relative "twenty-backend/servlet"
9
- require_relative "twenty-backend/migration"
10
- require_relative "twenty-backend/model"
11
- extend FileUtils
12
-
13
- ##
14
- # @return [String]
15
- # Returns the directory where twenty stores data.
16
- def self.data_dir
17
- File.join(Dir.home, ".local", "share", "20")
18
- end
19
-
20
- ##
21
- # @return [String]
22
- # Returns the location of the default SQLite database.
23
- def self.default_database
24
- @default_database ||= File.join(data_dir, "database.sqlite")
25
- end
26
-
27
- ##
28
- # Establishes a database connection.
29
- #
30
- # @param [String] path
31
- # The path to a SQLite3 database file.
32
- #
33
- # @return [void]
34
- def self.establish_connection(path:)
35
- ActiveRecord::Base.establish_connection(
36
- adapter: "sqlite3",
37
- database: path,
38
- pool: 16
39
- )
40
- end
41
-
42
- ##
43
- # Prepares the parent directory of the database.
44
- # @return [void]
45
- # @api private
46
- def self.prepare_dir
47
- return if File.exist?(default_database)
48
- mkdir_p(data_dir)
49
- touch(default_database)
50
- rescue => ex
51
- warn "prepare_dir error: #{ex.message} (#{ex.class})"
52
- end
53
- private_class_method :prepare_dir
54
- prepare_dir
55
- end
@@ -1,91 +0,0 @@
1
- """
2
- Autogenerated return type of CompleteTask.
3
- """
4
- type CompleteTaskPayload {
5
- errors: [String!]
6
- ok: Boolean
7
- }
8
-
9
- """
10
- Autogenerated return type of CreateTask.
11
- """
12
- type CreateTaskPayload {
13
- errors: [String!]!
14
- }
15
-
16
- """
17
- Autogenerated return type of DestroyTask.
18
- """
19
- type DestroyTaskPayload {
20
- errors: [String!]
21
- ok: Boolean
22
- }
23
-
24
- """
25
- An ISO 8601-encoded datetime
26
- """
27
- scalar ISO8601DateTime @specifiedBy(url: "https://tools.ietf.org/html/rfc3339")
28
-
29
- type Mutation {
30
- completeTask(taskId: Int!): CompleteTaskPayload
31
- createTask(input: TaskInput!): CreateTaskPayload
32
- destroyTask(taskId: Int!): DestroyTaskPayload
33
- setRandomProjectColor(projectId: Int!): SetRandomProjectColorPayload
34
- updateTask(input: TaskInput!, taskId: Int!): UpdateTaskPayload
35
- }
36
-
37
- type Project {
38
- color: String!
39
- id: Int!
40
- name: String!
41
- path: String!
42
- tasks: [Task!]!
43
- }
44
-
45
- type Query {
46
- findTask(taskId: Int!): Task
47
- projects: [Project!]!
48
- tasks(projectId: Int, status: TaskStatus!): [Task!]!
49
- }
50
-
51
- """
52
- Autogenerated return type of SetRandomProjectColor.
53
- """
54
- type SetRandomProjectColorPayload {
55
- errors: [String!]!
56
- project: Project
57
- }
58
-
59
- type Task {
60
- content: String!
61
- id: Int!
62
- inProgress: Boolean!
63
- isBacklogged: Boolean!
64
- isComplete: Boolean!
65
- isReady: Boolean!
66
- project: Project!
67
- status: TaskStatus!
68
- title: String!
69
- updatedAt: ISO8601DateTime!
70
- }
71
-
72
- input TaskInput {
73
- content: String
74
- projectId: Int
75
- status: TaskStatus
76
- title: String
77
- }
78
-
79
- enum TaskStatus {
80
- backlog
81
- complete
82
- in_progress
83
- ready
84
- }
85
-
86
- """
87
- Autogenerated return type of UpdateTask.
88
- """
89
- type UpdateTaskPayload {
90
- errors: [String!]!
91
- }
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Gem::Specification.new do |gem|
4
- gem.name = "twenty-backend"
5
- gem.authors = ["0x1eef"]
6
- gem.email = ["0x1eef@protonmail.com"]
7
- gem.homepage = "https://github.com/0x1eef/twenty#readme"
8
- gem.version = "0.1.0"
9
- gem.licenses = ["0BSD"]
10
- gem.files = `git ls-files`.split($/)
11
- gem.require_paths = ["lib"]
12
- gem.summary = "twenty: backend"
13
- gem.description = gem.summary
14
- gem.add_runtime_dependency "activerecord", "~> 7.1"
15
- gem.add_runtime_dependency "sqlite3", "~> 1.6"
16
- gem.add_runtime_dependency "webrick", "~> 1.8"
17
- gem.add_runtime_dependency "graphql", "~> 2.2"
18
- gem.add_development_dependency "test-unit", "~> 3.5.7"
19
- gem.add_development_dependency "standard", "~> 1.13"
20
- gem.add_development_dependency "rake", "~> 13.1"
21
- end