tina4 0.3.0 → 0.5.0

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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tina4/version.rb +1 -1
  3. data/lib/tina4ruby.rb +4 -0
  4. metadata +14 -258
  5. data/CHANGELOG.md +0 -73
  6. data/LICENSE.txt +0 -21
  7. data/README.md +0 -662
  8. data/exe/tina4 +0 -4
  9. data/lib/tina4/api.rb +0 -152
  10. data/lib/tina4/auth.rb +0 -139
  11. data/lib/tina4/cli.rb +0 -243
  12. data/lib/tina4/crud.rb +0 -124
  13. data/lib/tina4/database.rb +0 -135
  14. data/lib/tina4/database_result.rb +0 -89
  15. data/lib/tina4/debug.rb +0 -83
  16. data/lib/tina4/dev_reload.rb +0 -68
  17. data/lib/tina4/drivers/firebird_driver.rb +0 -94
  18. data/lib/tina4/drivers/mssql_driver.rb +0 -112
  19. data/lib/tina4/drivers/mysql_driver.rb +0 -90
  20. data/lib/tina4/drivers/postgres_driver.rb +0 -99
  21. data/lib/tina4/drivers/sqlite_driver.rb +0 -85
  22. data/lib/tina4/env.rb +0 -55
  23. data/lib/tina4/field_types.rb +0 -84
  24. data/lib/tina4/graphql.rb +0 -837
  25. data/lib/tina4/localization.rb +0 -100
  26. data/lib/tina4/middleware.rb +0 -59
  27. data/lib/tina4/migration.rb +0 -124
  28. data/lib/tina4/orm.rb +0 -168
  29. data/lib/tina4/queue.rb +0 -117
  30. data/lib/tina4/queue_backends/kafka_backend.rb +0 -80
  31. data/lib/tina4/queue_backends/lite_backend.rb +0 -79
  32. data/lib/tina4/queue_backends/rabbitmq_backend.rb +0 -73
  33. data/lib/tina4/rack_app.rb +0 -150
  34. data/lib/tina4/request.rb +0 -158
  35. data/lib/tina4/response.rb +0 -172
  36. data/lib/tina4/router.rb +0 -142
  37. data/lib/tina4/scss_compiler.rb +0 -131
  38. data/lib/tina4/session.rb +0 -145
  39. data/lib/tina4/session_handlers/file_handler.rb +0 -55
  40. data/lib/tina4/session_handlers/mongo_handler.rb +0 -49
  41. data/lib/tina4/session_handlers/redis_handler.rb +0 -43
  42. data/lib/tina4/swagger.rb +0 -123
  43. data/lib/tina4/template.rb +0 -478
  44. data/lib/tina4/templates/base.twig +0 -25
  45. data/lib/tina4/templates/errors/403.twig +0 -22
  46. data/lib/tina4/templates/errors/404.twig +0 -22
  47. data/lib/tina4/templates/errors/500.twig +0 -22
  48. data/lib/tina4/testing.rb +0 -213
  49. data/lib/tina4/webserver.rb +0 -101
  50. data/lib/tina4/websocket.rb +0 -167
  51. data/lib/tina4/wsdl.rb +0 -164
  52. data/lib/tina4.rb +0 -234
data/lib/tina4.rb DELETED
@@ -1,234 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "tina4/version"
4
- require_relative "tina4/debug"
5
- require_relative "tina4/env"
6
- require_relative "tina4/router"
7
- require_relative "tina4/request"
8
- require_relative "tina4/response"
9
- require_relative "tina4/rack_app"
10
- require_relative "tina4/webserver"
11
- require_relative "tina4/database"
12
- require_relative "tina4/database_result"
13
- require_relative "tina4/drivers/sqlite_driver"
14
- require_relative "tina4/drivers/postgres_driver"
15
- require_relative "tina4/drivers/mysql_driver"
16
- require_relative "tina4/drivers/mssql_driver"
17
- require_relative "tina4/drivers/firebird_driver"
18
- require_relative "tina4/field_types"
19
- require_relative "tina4/orm"
20
- require_relative "tina4/migration"
21
- require_relative "tina4/template"
22
- require_relative "tina4/auth"
23
- require_relative "tina4/session"
24
- require_relative "tina4/session_handlers/file_handler"
25
- require_relative "tina4/session_handlers/redis_handler"
26
- require_relative "tina4/session_handlers/mongo_handler"
27
- require_relative "tina4/middleware"
28
- require_relative "tina4/swagger"
29
- require_relative "tina4/crud"
30
- require_relative "tina4/api"
31
- require_relative "tina4/queue"
32
- require_relative "tina4/queue_backends/lite_backend"
33
- require_relative "tina4/queue_backends/rabbitmq_backend"
34
- require_relative "tina4/queue_backends/kafka_backend"
35
- require_relative "tina4/websocket"
36
- require_relative "tina4/wsdl"
37
- require_relative "tina4/scss_compiler"
38
- require_relative "tina4/dev_reload"
39
- require_relative "tina4/localization"
40
- require_relative "tina4/graphql"
41
- require_relative "tina4/testing"
42
-
43
- module Tina4
44
- BANNER = <<~'BANNER'
45
-
46
- ████████╗██╗███╗ ██╗ █████╗ ██╗ ██╗
47
- ╚══██╔══╝██║████╗ ██║██╔══██╗██║ ██║
48
- ██║ ██║██╔██╗ ██║███████║███████║
49
- ██║ ██║██║╚██╗██║██╔══██║╚════██║
50
- ██║ ██║██║ ╚████║██║ ██║ ██║
51
- ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝ ╚═╝
52
- BANNER
53
-
54
- class << self
55
- attr_accessor :root_dir, :database
56
-
57
- def print_banner
58
- puts "\e[35m#{BANNER}\e[0m"
59
- puts " \e[35mTina4 Ruby v#{VERSION} - This is not a framework\e[0m"
60
- puts ""
61
- rescue
62
- puts "\e[35mTINA4 Ruby v#{VERSION}\e[0m"
63
- end
64
-
65
- def initialize!(root_dir = Dir.pwd)
66
- @root_dir = root_dir
67
-
68
- # Print banner
69
- print_banner
70
-
71
- # Load environment
72
- Tina4::Env.load(root_dir)
73
-
74
- # Setup debug logging
75
- Tina4::Debug.setup(root_dir)
76
- Tina4::Debug.info("Tina4 Ruby v#{VERSION} initializing...")
77
-
78
- # Setup auth keys
79
- Tina4::Auth.setup(root_dir)
80
-
81
- # Load translations
82
- Tina4::Localization.load(root_dir)
83
-
84
- # Connect database if configured
85
- setup_database
86
-
87
- # Auto-discover routes
88
- auto_discover(root_dir)
89
-
90
- Tina4::Debug.info("Tina4 initialized successfully")
91
- end
92
-
93
- # DSL methods for route registration
94
- # GET is public by default (matching tina4_python behavior)
95
- # POST/PUT/PATCH/DELETE are secured by default — use auth: false to make public
96
- def get(path, auth: nil, swagger_meta: {}, &block)
97
- auth_handler = auth == false ? nil : auth
98
- Tina4::Router.add_route("GET", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
99
- end
100
-
101
- def post(path, auth: :default, swagger_meta: {}, &block)
102
- auth_handler = resolve_auth(auth)
103
- Tina4::Router.add_route("POST", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
104
- end
105
-
106
- def put(path, auth: :default, swagger_meta: {}, &block)
107
- auth_handler = resolve_auth(auth)
108
- Tina4::Router.add_route("PUT", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
109
- end
110
-
111
- def patch(path, auth: :default, swagger_meta: {}, &block)
112
- auth_handler = resolve_auth(auth)
113
- Tina4::Router.add_route("PATCH", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
114
- end
115
-
116
- def delete(path, auth: :default, swagger_meta: {}, &block)
117
- auth_handler = resolve_auth(auth)
118
- Tina4::Router.add_route("DELETE", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
119
- end
120
-
121
- def any(path, auth: false, swagger_meta: {}, &block)
122
- auth_handler = resolve_auth(auth)
123
- %w[GET POST PUT PATCH DELETE].each do |method|
124
- Tina4::Router.add_route(method, path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
125
- end
126
- end
127
-
128
- def options(path, &block)
129
- Tina4::Router.add_route("OPTIONS", path, block)
130
- end
131
-
132
- # Explicit secure variants (always secured, regardless of HTTP method)
133
- def secure_get(path, auth: nil, swagger_meta: {}, &block)
134
- auth_handler = auth || Tina4::Auth.default_secure_auth
135
- Tina4::Router.add_route("GET", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
136
- end
137
-
138
- def secure_post(path, auth: nil, swagger_meta: {}, &block)
139
- auth_handler = auth || Tina4::Auth.default_secure_auth
140
- Tina4::Router.add_route("POST", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
141
- end
142
-
143
- def secure_put(path, auth: nil, swagger_meta: {}, &block)
144
- auth_handler = auth || Tina4::Auth.default_secure_auth
145
- Tina4::Router.add_route("PUT", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
146
- end
147
-
148
- def secure_patch(path, auth: nil, swagger_meta: {}, &block)
149
- auth_handler = auth || Tina4::Auth.default_secure_auth
150
- Tina4::Router.add_route("PATCH", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
151
- end
152
-
153
- def secure_delete(path, auth: nil, swagger_meta: {}, &block)
154
- auth_handler = auth || Tina4::Auth.default_secure_auth
155
- Tina4::Router.add_route("DELETE", path, block, auth_handler: auth_handler, swagger_meta: swagger_meta)
156
- end
157
-
158
- # Route groups
159
- def group(prefix, auth: nil, &block)
160
- Tina4::Router.group(prefix, auth_handler: auth, &block)
161
- end
162
-
163
- # Middleware hooks
164
- def before(pattern = nil, &block)
165
- Tina4::Middleware.before(pattern, &block)
166
- end
167
-
168
- def after(pattern = nil, &block)
169
- Tina4::Middleware.after(pattern, &block)
170
- end
171
-
172
- # Template globals
173
- def template_global(key, value)
174
- Tina4::Template.add_global(key, value)
175
- end
176
-
177
- # Inline test DSL
178
- def describe(name, &block)
179
- Tina4::Testing.describe(name, &block)
180
- end
181
-
182
- # Translation shortcut
183
- def t(key, **options)
184
- Tina4::Localization.t(key, **options)
185
- end
186
-
187
- private
188
-
189
- # Resolve auth option for route registration
190
- # :default => use bearer auth (default for POST/PUT/PATCH/DELETE)
191
- # false => no auth (public route)
192
- # nil => no auth
193
- # Proc/Lambda => custom auth handler
194
- def resolve_auth(auth)
195
- case auth
196
- when :default
197
- Tina4::Auth.default_secure_auth
198
- when false, nil
199
- nil
200
- else
201
- auth # Custom auth handler (proc/lambda)
202
- end
203
- end
204
-
205
- def setup_database
206
- db_url = ENV["DATABASE_URL"] || ENV["DB_URL"]
207
- if db_url && !db_url.empty?
208
- begin
209
- @database = Tina4::Database.new(db_url)
210
- Tina4::Debug.info("Database connected: #{db_url.sub(/:[^:@]+@/, ':***@')}")
211
- rescue => e
212
- Tina4::Debug.error("Database connection failed: #{e.message}")
213
- end
214
- end
215
- end
216
-
217
- def auto_discover(root_dir)
218
- route_dirs = %w[routes src/routes src/api api]
219
- route_dirs.each do |dir|
220
- full_dir = File.join(root_dir, dir)
221
- next unless Dir.exist?(full_dir)
222
-
223
- Dir.glob(File.join(full_dir, "**/*.rb")).sort.each do |file|
224
- begin
225
- load file
226
- Tina4::Debug.debug("Auto-loaded: #{file}")
227
- rescue => e
228
- Tina4::Debug.error("Failed to load #{file}: #{e.message}")
229
- end
230
- end
231
- end
232
- end
233
- end
234
- end