tms_task_manager 0.1.6

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d3cffdf825e26fcd2ddce9180406d2211e205fd970f17343692834eb898a6006
4
+ data.tar.gz: 24e254a468850bbd98f79ac7b9e1c69edafca4c770f79801febe142bc40edf1f
5
+ SHA512:
6
+ metadata.gz: 5c38e2617ed9bf23bd706eddfa48f7a07b0e28579bce719b6be10d16c0716163090be5efa3478a5a164ae77bb2a6c76156f275d3bfac1c1056c637d68d6849d8
7
+ data.tar.gz: a4fa0c88505d86224836115556592907ded0469bb3733b9e183d55a7a0ad95620c224106f7764cbdc92b6638bfe1f4c70fe59d54fea750eed12d46e187b0bb05
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'tms_task_manager'
5
+
6
+ TmsTaskManager::Cli::Command.start(ARGV)
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'thor'
4
+ require 'pry'
5
+ require_relative '../configs/database'
6
+ require_relative '../services/task'
7
+ require_relative '../services/task_list'
8
+ module TmsTaskManager
9
+ module Cli
10
+ class Command < Thor
11
+ desc "create task --desc 'Mô tả' --start 'YYYY-MM-DD' --end 'YYYY-MM-DD' --status 'pending'", 'Thêm task'
12
+ option :desc, required: true, type: :string
13
+ option :start, required: true, type: :string
14
+ option :end, required: true, type: :string
15
+ option :status, required: false, type: :string, default: 'pending'
16
+
17
+ def create(title)
18
+ Configs::Database.setup
19
+ TmsTaskManager::Services::TaskList.create(
20
+ title, options[:desc], options[:start], options[:end], options[:status]
21
+ )
22
+ end
23
+
24
+ desc 'list', 'Danh sách task'
25
+ def list
26
+ TmsTaskManager::Services::TaskList.list
27
+ end
28
+
29
+ desc 'remove id', 'Xoa task'
30
+ def remove(id)
31
+ TmsTaskManager::Services::TaskList.remove(id)
32
+ end
33
+
34
+ desc "update id --status 'in_progress'", 'Cập nhật trạng thái task'
35
+ option :status, required: true, type: :string
36
+ def update(id)
37
+ TmsTaskManager::Services::Task.update_status(id, options[:status])
38
+ end
39
+
40
+ desc 'delete_all', 'Xóa tất cả task'
41
+ def delete_all
42
+ TmsTaskManager::Services::TaskList.delete_all
43
+ end
44
+
45
+ desc 'get id', 'Lấy task'
46
+ def get(id)
47
+ TmsTaskManager::Services::TaskList.get(id)
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'sqlite3'
4
+
5
+ module TmsTaskManager
6
+ module Configs
7
+ class Database
8
+ DB_PATH = File.expand_path('../remind.db', __dir__)
9
+
10
+ class << self
11
+ def connection
12
+ @connection ||= SQLite3::Database.new(DB_PATH).tap do |db|
13
+ db.results_as_hash = true
14
+ end
15
+ end
16
+
17
+ def setup
18
+ connection.execute_batch <<-SQL
19
+ CREATE TABLE IF NOT EXISTS tasks (
20
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
21
+ title VARCHAR(255),
22
+ description TEXT,
23
+ start_date DATETIME,
24
+ end_date DATETIME,
25
+ status VARCHAR(20) CHECK( status IN ('pending', 'in_progress', 'completed') )
26
+ );
27
+
28
+ CREATE TABLE IF NOT EXISTS categories (
29
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
30
+ title VARCHAR(255),
31
+ description TEXT,
32
+ slug VARCHAR(255) UNIQUE
33
+ );
34
+
35
+ CREATE TABLE IF NOT EXISTS task_category (
36
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
37
+ task_id INTEGER,
38
+ category_id INTEGER,
39
+ FOREIGN KEY (task_id) REFERENCES tasks(id),
40
+ FOREIGN KEY (category_id) REFERENCES categories(id)
41
+ );
42
+ SQL
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TmsTaskManager
4
+ module Helpers
5
+
6
+ module ErrorHandler
7
+ def handle_errors
8
+ yield
9
+ rescue StandardError => e
10
+ puts "Error: #{e.class} - #{e.message}"
11
+ end
12
+ end
13
+ end
14
+ end
Binary file
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../configs/database'
4
+ require_relative '../helpers/error_handler'
5
+
6
+ module TmsTaskManager
7
+ module Services
8
+ class Task
9
+ extend TmsTaskManager::Helpers::ErrorHandler
10
+ @db = TmsTaskManager::Configs::Database.connection
11
+
12
+ # Updates the status of a task
13
+ def self.update_status(id, status)
14
+ handle_errors do
15
+ raise 'Status must be "pending", "in_progress" or "completed"' unless %w[pending in_progress completed].include?(status.downcase)
16
+
17
+ task = @db.execute('SELECT * FROM tasks WHERE id = ?', [id]).first
18
+ if task.nil?
19
+ puts "Task not found: #{id}"
20
+ return { success: false, message: 'Task not found' }
21
+ end
22
+
23
+ @db.execute('UPDATE tasks SET status = ? WHERE id = ?', [status, id])
24
+ updated_task = task.merge('status' => status)
25
+ puts "Task updated successfully: ID: #{id}, New Status: #{status}"
26
+ { success: true, message: "Task updated: #{id}", task: updated_task }
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'pry'
4
+ require_relative '../configs/database'
5
+ require_relative '../helpers/error_handler'
6
+
7
+ module TmsTaskManager
8
+ module Services
9
+ class TaskList
10
+ extend TmsTaskManager::Helpers::ErrorHandler
11
+ @db = TmsTaskManager::Configs::Database.connection
12
+
13
+ # Adds a new task to the database
14
+ def self.create(title, description, start_date, end_date, status = 'pending')
15
+ handle_errors do
16
+ raise 'Status must be "pending", "in_progress" or "completed"' unless %w[pending in_progress completed].include?(status.downcase)
17
+
18
+ @db.execute('INSERT INTO tasks (title, description, start_date, end_date, status) VALUES (?, ?, ?, ?, ?)',
19
+ [title, description, start_date, end_date, status])
20
+ puts "Task created successfully: #{title}"
21
+ { success: true, message: "Task created: #{title}" }
22
+ end
23
+ end
24
+
25
+ # Lists all tasks in the database
26
+ def self.list
27
+ handle_errors do
28
+ tasks = @db.execute('SELECT id, title, status, start_date, end_date FROM tasks')
29
+ if tasks.empty?
30
+ puts "No tasks found."
31
+ else
32
+ puts "Listing all tasks: #{tasks}"
33
+ end
34
+ tasks.empty? ? [] : tasks
35
+ end
36
+ end
37
+
38
+ # Removes a task from the database
39
+ def self.remove(id)
40
+ handle_errors do
41
+ @db.execute('DELETE FROM tasks WHERE id = ?', [id])
42
+ puts "Task removed successfully: #{id}"
43
+ { success: true, message: "Task removed: #{id}" }
44
+ end
45
+ end
46
+
47
+ # Deletes all tasks
48
+ def self.delete_all
49
+ handle_errors do
50
+ @db.execute('DELETE FROM tasks')
51
+ puts "All tasks have been deleted."
52
+ { success: true, message: 'All tasks deleted' }
53
+ end
54
+ end
55
+
56
+ # Gets a task from the database
57
+ def self.get(id)
58
+ handle_errors do
59
+ task = @db.execute('SELECT * FROM tasks WHERE id = ?', [id]).first
60
+ if task.nil?
61
+ puts "Task not found: #{id}"
62
+ { success: false, message: 'Task not found' }
63
+ else
64
+ puts "Task details: #{task}"
65
+ task
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TmsTaskManager
4
+ VERSION = '0.1.6'
5
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'tms_task_manager/version'
4
+ require_relative 'tms_task_manager/clis/cli'
5
+ module TmsTaskManager
6
+ class Error < StandardError; end
7
+ # Your code goes here...
8
+ end
metadata ADDED
@@ -0,0 +1,117 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: tms_task_manager
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.6
5
+ platform: ruby
6
+ authors:
7
+ - tms-nguyenvu
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 2025-03-27 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: pry
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.14'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '0.14'
26
+ - !ruby/object:Gem::Dependency
27
+ name: sqlite3
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '1.5'
33
+ - - "<"
34
+ - !ruby/object:Gem::Version
35
+ version: '3.0'
36
+ type: :runtime
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '1.5'
43
+ - - "<"
44
+ - !ruby/object:Gem::Version
45
+ version: '3.0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.12'
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.12'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rubocop
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '1.50'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.50'
74
+ description: TmsTaskManager provides an easy way to create, manage, and track tasks
75
+ using a simple Ruby-based interface with database support.
76
+ email:
77
+ - vu.nguyen1@tomosia.com
78
+ executables:
79
+ - tms_task_manager
80
+ extensions: []
81
+ extra_rdoc_files: []
82
+ files:
83
+ - exe/tms_task_manager
84
+ - lib/tms_task_manager.rb
85
+ - lib/tms_task_manager/clis/cli.rb
86
+ - lib/tms_task_manager/configs/database.rb
87
+ - lib/tms_task_manager/helpers/error_handler.rb
88
+ - lib/tms_task_manager/remind.db
89
+ - lib/tms_task_manager/services/task.rb
90
+ - lib/tms_task_manager/services/task_list.rb
91
+ - lib/tms_task_manager/version.rb
92
+ homepage: https://github.com/tms-nguyenvu/training-ruby/tree/exercise-03
93
+ licenses:
94
+ - MIT
95
+ metadata:
96
+ allowed_push_host: https://rubygems.org
97
+ homepage_uri: https://github.com/tms-nguyenvu/training-ruby/tree/exercise-03
98
+ source_code_uri: https://github.com/tms-nguyenvu/training-ruby/tree/exercise-03
99
+ changelog_uri: https://github.com/tms-nguyenvu/training-ruby/tree/exercise-03/blob/main/CHANGELOG.md
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - ">="
106
+ - !ruby/object:Gem::Version
107
+ version: 3.1.0
108
+ required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ requirements: []
114
+ rubygems_version: 3.6.2
115
+ specification_version: 4
116
+ summary: A simple task management library for Ruby applications.
117
+ test_files: []