From 43dc97e48c109870ee7d931e0555a3c1fad8a243 Mon Sep 17 00:00:00 2001 From: ryan Date: Fri, 28 Aug 2026 12:56:02 +0800 Subject: [PATCH] refactor(layout): consolidate backend codebase into backend/ package and clean root directory - Moved cmd/, core/, plugins/, pkg/, downstream/, and main.go into backend/ directory - Batch updated all Go source files to import github.com/Rain-kl/Wavelet/backend/... - Updated Makefile, scripts/swagger.sh, architecture guards, and platform skills - Passed all quality gates (100% tests, 0 lint issues, clean build) --- .agents/skills/database-migration/SKILL.md | 8 +- .agents/skills/file-upload/SKILL.md | 2 +- .agents/skills/new-api/SKILL.md | 8 +- .agents/skills/new-async-task/SKILL.md | 2 +- .../references/CODE-EXAMPLES.md | 6 +- .agents/skills/push-notification/SKILL.md | 6 +- AGENTS.md | 20 +- CONTRIBUTING.md | 142 -------------- Makefile | 34 ++-- NOTICE | 9 - {cmd => backend/cmd}/all.go | 2 +- {cmd => backend/cmd}/api.go | 2 +- {cmd => backend/cmd}/app.go | 43 +++-- {cmd => backend/cmd}/app_test.go | 2 +- {cmd => backend/cmd}/banner.go | 6 +- {cmd => backend/cmd}/banner_test.go | 6 +- {cmd => backend/cmd}/reset_passwd.go | 6 +- {cmd => backend/cmd}/reset_passwd_test.go | 4 +- {cmd => backend/cmd}/root.go | 10 +- {cmd => backend/cmd}/scheduler.go | 2 +- {cmd => backend/cmd}/worker.go | 2 +- {core => backend/core}/app.go | 0 {core => backend/core}/app_test.go | 4 +- {core => backend/core}/container.go | 0 {core => backend/core}/context.go | 2 +- {core => backend/core}/context_test.go | 2 +- {core => backend/core}/contracts/auth.go | 8 +- {core => backend/core}/contracts/cache.go | 0 {core => backend/core}/contracts/database.go | 0 {core => backend/core}/contracts/events.go | 2 +- {core => backend/core}/contracts/logger.go | 0 {core => backend/core}/contracts/storage.go | 0 {core => backend/core}/contracts/user.go | 0 {core => backend/core}/events.go | 0 {core => backend/core}/events_test.go | 2 +- .../core}/extpoints/extpoints_test.go | 4 +- {core => backend/core}/extpoints/migration.go | 0 {core => backend/core}/extpoints/router.go | 0 {core => backend/core}/extpoints/schedule.go | 0 {core => backend/core}/extpoints/setting.go | 0 {core => backend/core}/extpoints/task.go | 0 {core => backend/core}/manifest.go | 0 {core => backend/core}/types.go | 2 +- {downstream => backend/downstream}/README.md | 0 .../plugins/custom_example/plugin.go | 12 +- main.go => backend/main.go | 2 +- {pkg => backend/pkg}/batchwriter/config.go | 0 {pkg => backend/pkg}/batchwriter/errs.go | 0 {pkg => backend/pkg}/batchwriter/writer.go | 0 .../pkg}/batchwriter/writer_test.go | 18 +- {pkg => backend/pkg}/buildinfo/buildinfo.go | 0 {pkg => backend/pkg}/cache/disk/cache.go | 0 {pkg => backend/pkg}/cache/disk/cache_test.go | 0 {pkg => backend/pkg}/cache/ram/cache.go | 0 {pkg => backend/pkg}/cache/ram/cache_test.go | 0 {pkg => backend/pkg}/cache/ram/manager.go | 0 {pkg => backend/pkg}/config/config.go | 0 {pkg => backend/pkg}/config/config_test.go | 0 {pkg => backend/pkg}/config/model.go | 0 {pkg => backend/pkg}/httppool/httppool.go | 0 .../pkg}/httppool/httppool_test.go | 0 {pkg => backend/pkg}/idgen/snowflake.go | 2 +- {pkg => backend/pkg}/idgen/snowflake_test.go | 0 {pkg => backend/pkg}/logger/errs.go | 0 {pkg => backend/pkg}/logger/logger.go | 0 {pkg => backend/pkg}/logger/ringbuffer.go | 0 .../pkg}/logger/ringbuffer_test.go | 0 {pkg => backend/pkg}/logger/utils.go | 0 {pkg => backend/pkg}/mail/errs.go | 0 {pkg => backend/pkg}/mail/mail.go | 0 {pkg => backend/pkg}/mail/mail_test.go | 0 {pkg => backend/pkg}/response/abort.go | 0 {pkg => backend/pkg}/response/middleware.go | 0 .../pkg}/response/middleware_test.go | 0 {pkg => backend/pkg}/response/response.go | 0 {pkg => backend/pkg}/testhelper/cleanup.go | 0 {pkg => backend/pkg}/testhelper/gin.go | 2 +- .../pkg}/testhelper/test_helper.go | 4 +- {pkg => backend/pkg}/trace/propagator.go | 0 {pkg => backend/pkg}/trace/sampler.go | 0 {pkg => backend/pkg}/trace/trace.go | 0 {pkg => backend/pkg}/trace/trace_provider.go | 0 {pkg => backend/pkg}/util/client_errs.go | 0 {pkg => backend/pkg}/util/crypto.go | 0 {pkg => backend/pkg}/util/custom_types.go | 0 {pkg => backend/pkg}/util/gin_context.go | 2 +- {pkg => backend/pkg}/util/goroutine.go | 0 {pkg => backend/pkg}/util/goroutine_test.go | 0 {pkg => backend/pkg}/util/http_clients.go | 2 +- {pkg => backend/pkg}/util/like.go | 0 {pkg => backend/pkg}/util/like_test.go | 0 {pkg => backend/pkg}/util/password.go | 0 {pkg => backend/pkg}/util/password_test.go | 0 {pkg => backend/pkg}/util/strings.go | 0 {pkg => backend/pkg}/util/uuid.go | 0 .../plugins}/domain/admin/errs.go | 0 .../domain/admin/handlers_auth_source.go | 6 +- .../plugins}/domain/admin/handlers_cache.go | 4 +- .../plugins}/domain/admin/handlers_config.go | 14 +- .../plugins}/domain/admin/handlers_db.go | 6 +- .../plugins}/domain/admin/handlers_logs.go | 16 +- .../plugins}/domain/admin/handlers_status.go | 8 +- .../plugins}/domain/admin/handlers_tasks.go | 8 +- .../domain/admin/handlers_templates.go | 2 +- .../plugins}/domain/admin/handlers_updater.go | 8 +- .../plugins}/domain/admin/handlers_user.go | 14 +- .../plugins}/domain/admin/middlewares.go | 10 +- .../domain/admin/migrations/00001_initial.sql | 0 .../plugins}/domain/admin/models.go | 0 .../plugins}/domain/admin/plugin.go | 20 +- .../plugins}/domain/admin/plugin_test.go | 4 +- .../plugins}/domain/admin/repository.go | 10 +- .../plugins}/domain/admin/restart_unix.go | 2 +- .../plugins}/domain/admin/restart_windows.go | 0 .../domain/admin/system_config_cache.go | 6 +- .../domain/admin/system_config_test.go | 4 +- .../plugins}/domain/auth/audit.go | 4 +- .../domain/auth/auth_source_resolver.go | 4 +- .../plugins}/domain/auth/cache.go | 8 +- .../plugins}/domain/auth/cache_test.go | 6 +- .../plugins}/domain/auth/constants.go | 0 .../plugins}/domain/auth/errs.go | 0 .../plugins}/domain/auth/handlers.go | 14 +- .../plugins}/domain/auth/middleware.go | 12 +- .../domain/auth/migrations/00001_initial.sql | 0 .../plugins}/domain/auth/models.go | 2 +- .../plugins}/domain/auth/plugin.go | 6 +- .../plugins}/domain/auth/plugin_test.go | 8 +- .../plugins}/domain/auth/provider_cache.go | 0 .../plugins}/domain/auth/repository.go | 2 +- .../plugins}/domain/auth/service.go | 6 +- .../plugins}/domain/auth/session.go | 6 +- .../plugins}/domain/cap/errs.go | 0 .../plugins}/domain/cap/handlers.go | 6 +- .../plugins}/domain/cap/manager.go | 6 +- .../plugins}/domain/cap/middleware.go | 2 +- .../plugins}/domain/cap/plugin.go | 4 +- .../plugins}/domain/cap/pow/cap.go | 0 .../plugins}/domain/cap/pow/errs.go | 0 .../plugins}/domain/cap/pow/pow_test.go | 0 .../plugins}/domain/cap/pow/prng.go | 0 .../plugins}/domain/cap/pow/store.go | 0 .../plugins}/domain/cap/runtime_settings.go | 6 +- .../plugins}/domain/domain_test.go | 22 +-- .../domain/message_gateway/admin_handlers.go | 2 +- .../domain/message_gateway/admin_logics.go | 0 .../domain/message_gateway/channel.go | 0 .../message_gateway/channels/qq/adapter.go | 4 +- .../channels/qq/adapter_test.go | 2 +- .../channels/telegram/adapter.go | 2 +- .../channels/telegram/adapter_test.go | 2 +- .../custom_events_admin_login.go | 2 +- .../plugins}/domain/message_gateway/errs.go | 0 .../domain/message_gateway/gateway_types.go | 0 .../domain/message_gateway/handlers.go | 6 +- .../plugins}/domain/message_gateway/logics.go | 0 .../message_gateway/message_gateway_test.go | 4 +- .../migrations/00001_initial.sql | 0 .../plugins}/domain/message_gateway/models.go | 0 .../domain/message_gateway/pairing.go | 0 .../domain/message_gateway/pairing_test.go | 0 .../plugins}/domain/message_gateway/plugin.go | 20 +- .../domain/message_gateway/plugin_test.go | 4 +- .../domain/message_gateway/push/custom.go | 2 +- .../message_gateway/push/custom_test.go | 0 .../domain/message_gateway/push/email.go | 2 +- .../domain/message_gateway/push/email_test.go | 0 .../domain/message_gateway/push/lark.go | 2 +- .../domain/message_gateway/push/push.go | 0 .../domain/message_gateway/push/telegram.go | 2 +- .../message_gateway/push/telegram_test.go | 0 .../domain/message_gateway/push/template.go | 0 .../message_gateway/push/template_test.go | 0 .../domain/message_gateway/push_channels.go | 4 +- .../domain/message_gateway/push_constants.go | 0 .../domain/message_gateway/push_events.go | 6 +- .../domain/message_gateway/push_handlers.go | 4 +- .../domain/message_gateway/push_logics.go | 8 +- .../message_gateway/push_task_listener.go | 4 +- .../domain/message_gateway/push_tasks.go | 4 +- .../domain/message_gateway/registry.go | 0 .../domain/message_gateway/registry_test.go | 0 .../domain/message_gateway/repository.go | 6 +- .../plugins}/domain/message_gateway/runner.go | 2 +- .../plugins}/domain/message_gateway/secret.go | 4 +- .../plugins}/domain/risk_control/logics.go | 6 +- .../risk_control/logstore/access_log.go | 4 +- .../logstore/access_log_filter.go | 0 .../risk_control/logstore/access_log_stats.go | 2 +- .../risk_control/logstore/access_log_test.go | 2 +- .../logstore/access_log_writer.go | 2 +- .../domain/risk_control/logstore/browser.go | 0 .../domain/risk_control/logstore/cleanup.go | 2 +- .../risk_control/logstore/clickhouse.go | 2 +- .../domain/risk_control/logstore/gorm.go | 2 +- .../domain/risk_control/logstore/gorm_test.go | 0 .../risk_control/logstore/imports_test.go | 12 +- .../domain/risk_control/logstore/logstore.go | 0 .../migrations-clickhouse/00001_initial.sql | 0 .../logstore/migrations/00001_initial.sql | 0 .../domain/risk_control/logstore/models.go | 0 .../logstore/partition_cleanup.go | 0 .../logstore/partition_cleanup_test.go | 0 .../domain/risk_control/logstore/provider.go | 6 +- .../domain/risk_control/middleware.go | 12 +- .../domain/risk_control/middleware_test.go | 14 +- .../plugins}/domain/risk_control/models.go | 0 .../plugins}/domain/risk_control/plugin.go | 4 +- .../domain/risk_control/plugin_test.go | 4 +- .../plugins}/domain/system/plugin.go | 8 +- .../domain/upload/cache/access_cache.go | 12 +- .../domain/upload/cache/access_cache_test.go | 6 +- .../domain/upload/cache/meta_cache.go | 10 +- .../domain/upload/cache/meta_cache_test.go | 6 +- .../plugins}/domain/upload/errs.go | 2 +- .../plugins}/domain/upload/exports.go | 16 +- .../domain/upload/filesrv/file_server.go | 22 +-- .../domain/upload/filesrv/file_server_test.go | 18 +- .../domain/upload/handler/file_management.go | 16 +- .../upload/handler/file_management_test.go | 6 +- .../plugins}/domain/upload/handler/logics.go | 6 +- .../plugins}/domain/upload/handler/routers.go | 20 +- .../domain/upload/handler/routers_test.go | 16 +- .../plugins}/domain/upload/handler/stats.go | 4 +- .../plugins}/domain/upload/ingest/errors.go | 2 +- .../plugins}/domain/upload/ingest/helpers.go | 20 +- .../plugins}/domain/upload/ingest/ingest.go | 4 +- .../domain/upload/ingest/ingest_test.go | 8 +- .../plugins}/domain/upload/ingest/remove.go | 10 +- .../plugins}/domain/upload/ingest/types.go | 2 +- .../upload/migrations/00001_initial.sql | 0 .../plugins}/domain/upload/models.go | 2 +- .../plugins}/domain/upload/models/models.go | 0 .../plugins}/domain/upload/plugin.go | 12 +- .../plugins}/domain/upload/repository.go | 6 +- .../domain/upload/repository/repository.go | 6 +- .../domain/upload/shared/constants.go | 0 .../plugins}/domain/upload/shared/errs.go | 0 .../plugins}/domain/upload/stats/category.go | 2 +- .../domain/upload/stats/stats_counter.go | 6 +- .../domain/upload/stats/stats_counter_test.go | 6 +- .../domain/upload/storage/access_state.go | 6 +- .../domain/upload/storage/migration.go | 4 +- .../domain/upload/storage/storage_ops.go | 6 +- .../plugins}/domain/upload/task/cleanup.go | 20 +- .../domain/upload/task/rebuild_stats.go | 8 +- .../domain/upload/task/rebuild_stats_test.go | 6 +- .../domain/upload/task/storage_migration.go | 16 +- .../task/storage_migration_task_test.go | 8 +- .../plugins}/domain/upload/task/tasks.go | 10 +- .../plugins}/domain/upload/task/tasks_test.go | 18 +- .../plugins}/domain/upload/util/media.go | 2 +- .../plugins}/domain/upload/util/utils.go | 2 +- .../plugins}/domain/user/errs.go | 0 .../plugins}/domain/user/handlers.go | 12 +- .../domain/user/migrations/00001_initial.sql | 0 .../plugins}/domain/user/models.go | 2 +- .../plugins}/domain/user/plugin.go | 22 ++- .../plugins}/domain/user/plugin_test.go | 8 +- .../plugins}/domain/user/repository.go | 4 +- .../plugins}/domain/user/service.go | 8 +- .../drivers/driver_asynq_cron/errs.go | 0 .../migrations/00001_initial.sql | 0 .../drivers/driver_asynq_cron/plugin.go | 4 +- .../drivers/driver_asynq_cron/schedule.go | 2 +- .../drivers/driver_asynq_cron/scheduler.go | 4 +- .../driver_asynq_cron/scheduler_test.go | 0 .../drivers/driver_asynq_worker/constants.go | 0 .../drivers/driver_asynq_worker/errs.go | 0 .../drivers/driver_asynq_worker/executor.go | 8 +- .../driver_asynq_worker/executor_test.go | 2 +- .../drivers/driver_asynq_worker/handler.go | 0 .../drivers/driver_asynq_worker/meta.go | 0 .../drivers/driver_asynq_worker/meta_test.go | 0 .../migrations/00001_initial.sql | 0 .../driver_asynq_worker/permanent_error.go | 0 .../permanent_error_test.go | 0 .../drivers/driver_asynq_worker/plugin.go | 2 +- .../drivers/driver_asynq_worker/task_repo.go | 6 +- .../drivers/driver_asynq_worker/types.go | 2 +- .../drivers/driver_asynq_worker/utils.go | 2 +- .../drivers/driver_asynq_worker/utils_test.go | 2 +- .../plugins}/drivers/driver_http/engine.go | 10 +- .../drivers/driver_http/middlewares.go | 10 +- .../drivers/driver_http/middlewares_test.go | 2 +- .../plugins}/drivers/driver_http/plugin.go | 4 +- .../plugins}/drivers/drivers_test.go | 10 +- .../plugins}/infra/cache/errs.go | 0 .../plugins}/infra/cache/plugin.go | 8 +- .../plugins}/infra/cache/plugin_test.go | 6 +- .../plugins}/infra/cache/redis.go | 2 +- .../plugins}/infra/cache/redis_test.go | 0 .../plugins}/infra/database/clickhouse.go | 2 +- .../plugins}/infra/database/plugin.go | 4 +- .../plugins}/infra/database/plugin_test.go | 6 +- .../plugins}/infra/database/postgres.go | 2 +- .../infra/database/postgres_logger.go | 2 +- .../infra/database/postgres_logger_test.go | 0 .../plugins}/infra/infra_test.go | 14 +- .../plugins}/infra/logger/plugin.go | 6 +- .../plugins}/infra/logger/plugin_test.go | 6 +- .../plugins}/infra/storage/diskcache/cache.go | 4 +- .../infra/storage/diskcache/cache_test.go | 4 +- .../infra/storage/objectstore/config.go | 2 +- .../infra/storage/objectstore/http.go | 2 +- .../infra/storage/objectstore/local.go | 0 .../infra/storage/objectstore/local_test.go | 0 .../plugins}/infra/storage/objectstore/oss.go | 0 .../plugins}/infra/storage/objectstore/s3.go | 0 .../infra/storage/objectstore/storage.go | 6 +- .../infra/storage/objectstore/storage_test.go | 2 +- .../infra/storage/objectstore/webdav.go | 2 +- .../plugins}/infra/storage/plugin.go | 10 +- .../plugins}/infra/storage/plugin_test.go | 8 +- docs/WAVELET_WHITE_PAPER.md | 29 +-- docs/docs.go | 182 +++++++++--------- docs/swagger.json | 182 +++++++++--------- docs/swagger.yaml | 134 ++++++------- scripts/swagger.sh | 2 +- 319 files changed, 912 insertions(+), 1031 deletions(-) delete mode 100644 CONTRIBUTING.md delete mode 100644 NOTICE rename {cmd => backend/cmd}/all.go (91%) rename {cmd => backend/cmd}/api.go (90%) rename {cmd => backend/cmd}/app.go (85%) rename {cmd => backend/cmd}/app_test.go (97%) rename {cmd => backend/cmd}/banner.go (92%) rename {cmd => backend/cmd}/banner_test.go (90%) rename {cmd => backend/cmd}/reset_passwd.go (93%) rename {cmd => backend/cmd}/reset_passwd_test.go (97%) rename {cmd => backend/cmd}/root.go (89%) rename {cmd => backend/cmd}/scheduler.go (90%) rename {cmd => backend/cmd}/worker.go (90%) rename {core => backend/core}/app.go (100%) rename {core => backend/core}/app_test.go (99%) rename {core => backend/core}/container.go (100%) rename {core => backend/core}/context.go (99%) rename {core => backend/core}/context_test.go (99%) rename {core => backend/core}/contracts/auth.go (95%) rename {core => backend/core}/contracts/cache.go (100%) rename {core => backend/core}/contracts/database.go (100%) rename {core => backend/core}/contracts/events.go (99%) rename {core => backend/core}/contracts/logger.go (100%) rename {core => backend/core}/contracts/storage.go (100%) rename {core => backend/core}/contracts/user.go (100%) rename {core => backend/core}/events.go (100%) rename {core => backend/core}/events_test.go (99%) rename {core => backend/core}/extpoints/extpoints_test.go (98%) rename {core => backend/core}/extpoints/migration.go (100%) rename {core => backend/core}/extpoints/router.go (100%) rename {core => backend/core}/extpoints/schedule.go (100%) rename {core => backend/core}/extpoints/setting.go (100%) rename {core => backend/core}/extpoints/task.go (100%) rename {core => backend/core}/manifest.go (100%) rename {core => backend/core}/types.go (99%) rename {downstream => backend/downstream}/README.md (100%) rename {downstream => backend/downstream}/plugins/custom_example/plugin.go (83%) rename main.go => backend/main.go (92%) rename {pkg => backend/pkg}/batchwriter/config.go (100%) rename {pkg => backend/pkg}/batchwriter/errs.go (100%) rename {pkg => backend/pkg}/batchwriter/writer.go (100%) rename {pkg => backend/pkg}/batchwriter/writer_test.go (95%) rename {pkg => backend/pkg}/buildinfo/buildinfo.go (100%) rename {pkg => backend/pkg}/cache/disk/cache.go (100%) rename {pkg => backend/pkg}/cache/disk/cache_test.go (100%) rename {pkg => backend/pkg}/cache/ram/cache.go (100%) rename {pkg => backend/pkg}/cache/ram/cache_test.go (100%) rename {pkg => backend/pkg}/cache/ram/manager.go (100%) rename {pkg => backend/pkg}/config/config.go (100%) rename {pkg => backend/pkg}/config/config_test.go (100%) rename {pkg => backend/pkg}/config/model.go (100%) rename {pkg => backend/pkg}/httppool/httppool.go (100%) rename {pkg => backend/pkg}/httppool/httppool_test.go (100%) rename {pkg => backend/pkg}/idgen/snowflake.go (96%) rename {pkg => backend/pkg}/idgen/snowflake_test.go (100%) rename {pkg => backend/pkg}/logger/errs.go (100%) rename {pkg => backend/pkg}/logger/logger.go (100%) rename {pkg => backend/pkg}/logger/ringbuffer.go (100%) rename {pkg => backend/pkg}/logger/ringbuffer_test.go (100%) rename {pkg => backend/pkg}/logger/utils.go (100%) rename {pkg => backend/pkg}/mail/errs.go (100%) rename {pkg => backend/pkg}/mail/mail.go (100%) rename {pkg => backend/pkg}/mail/mail_test.go (100%) rename {pkg => backend/pkg}/response/abort.go (100%) rename {pkg => backend/pkg}/response/middleware.go (100%) rename {pkg => backend/pkg}/response/middleware_test.go (100%) rename {pkg => backend/pkg}/response/response.go (100%) rename {pkg => backend/pkg}/testhelper/cleanup.go (100%) rename {pkg => backend/pkg}/testhelper/gin.go (90%) rename {pkg => backend/pkg}/testhelper/test_helper.go (99%) rename {pkg => backend/pkg}/trace/propagator.go (100%) rename {pkg => backend/pkg}/trace/sampler.go (100%) rename {pkg => backend/pkg}/trace/trace.go (100%) rename {pkg => backend/pkg}/trace/trace_provider.go (100%) rename {pkg => backend/pkg}/util/client_errs.go (100%) rename {pkg => backend/pkg}/util/crypto.go (100%) rename {pkg => backend/pkg}/util/custom_types.go (100%) rename {pkg => backend/pkg}/util/gin_context.go (99%) rename {pkg => backend/pkg}/util/goroutine.go (100%) rename {pkg => backend/pkg}/util/goroutine_test.go (100%) rename {pkg => backend/pkg}/util/http_clients.go (97%) rename {pkg => backend/pkg}/util/like.go (100%) rename {pkg => backend/pkg}/util/like_test.go (100%) rename {pkg => backend/pkg}/util/password.go (100%) rename {pkg => backend/pkg}/util/password_test.go (100%) rename {pkg => backend/pkg}/util/strings.go (100%) rename {pkg => backend/pkg}/util/uuid.go (100%) rename {plugins => backend/plugins}/domain/admin/errs.go (100%) rename {plugins => backend/plugins}/domain/admin/handlers_auth_source.go (95%) rename {plugins => backend/plugins}/domain/admin/handlers_cache.go (96%) rename {plugins => backend/plugins}/domain/admin/handlers_config.go (97%) rename {plugins => backend/plugins}/domain/admin/handlers_db.go (99%) rename {plugins => backend/plugins}/domain/admin/handlers_logs.go (97%) rename {plugins => backend/plugins}/domain/admin/handlers_status.go (96%) rename {plugins => backend/plugins}/domain/admin/handlers_tasks.go (98%) rename {plugins => backend/plugins}/domain/admin/handlers_templates.go (99%) rename {plugins => backend/plugins}/domain/admin/handlers_updater.go (99%) rename {plugins => backend/plugins}/domain/admin/handlers_user.go (97%) rename {plugins => backend/plugins}/domain/admin/middlewares.go (80%) rename {plugins => backend/plugins}/domain/admin/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/admin/models.go (100%) rename {plugins => backend/plugins}/domain/admin/plugin.go (90%) rename {plugins => backend/plugins}/domain/admin/plugin_test.go (89%) rename {plugins => backend/plugins}/domain/admin/repository.go (98%) rename {plugins => backend/plugins}/domain/admin/restart_unix.go (96%) rename {plugins => backend/plugins}/domain/admin/restart_windows.go (100%) rename {plugins => backend/plugins}/domain/admin/system_config_cache.go (97%) rename {plugins => backend/plugins}/domain/admin/system_config_test.go (97%) rename {plugins => backend/plugins}/domain/auth/audit.go (90%) rename {plugins => backend/plugins}/domain/auth/auth_source_resolver.go (98%) rename {plugins => backend/plugins}/domain/auth/cache.go (96%) rename {plugins => backend/plugins}/domain/auth/cache_test.go (94%) rename {plugins => backend/plugins}/domain/auth/constants.go (100%) rename {plugins => backend/plugins}/domain/auth/errs.go (100%) rename {plugins => backend/plugins}/domain/auth/handlers.go (97%) rename {plugins => backend/plugins}/domain/auth/middleware.go (94%) rename {plugins => backend/plugins}/domain/auth/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/auth/models.go (99%) rename {plugins => backend/plugins}/domain/auth/plugin.go (95%) rename {plugins => backend/plugins}/domain/auth/plugin_test.go (94%) rename {plugins => backend/plugins}/domain/auth/provider_cache.go (100%) rename {plugins => backend/plugins}/domain/auth/repository.go (97%) rename {plugins => backend/plugins}/domain/auth/service.go (95%) rename {plugins => backend/plugins}/domain/auth/session.go (95%) rename {plugins => backend/plugins}/domain/cap/errs.go (100%) rename {plugins => backend/plugins}/domain/cap/handlers.go (94%) rename {plugins => backend/plugins}/domain/cap/manager.go (96%) rename {plugins => backend/plugins}/domain/cap/middleware.go (93%) rename {plugins => backend/plugins}/domain/cap/plugin.go (94%) rename {plugins => backend/plugins}/domain/cap/pow/cap.go (100%) rename {plugins => backend/plugins}/domain/cap/pow/errs.go (100%) rename {plugins => backend/plugins}/domain/cap/pow/pow_test.go (100%) rename {plugins => backend/plugins}/domain/cap/pow/prng.go (100%) rename {plugins => backend/plugins}/domain/cap/pow/store.go (100%) rename {plugins => backend/plugins}/domain/cap/runtime_settings.go (97%) rename {plugins => backend/plugins}/domain/domain_test.go (95%) rename {plugins => backend/plugins}/domain/message_gateway/admin_handlers.go (99%) rename {plugins => backend/plugins}/domain/message_gateway/admin_logics.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/channel.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/channels/qq/adapter.go (97%) rename {plugins => backend/plugins}/domain/message_gateway/channels/qq/adapter_test.go (93%) rename {plugins => backend/plugins}/domain/message_gateway/channels/telegram/adapter.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/channels/telegram/adapter_test.go (94%) rename {plugins => backend/plugins}/domain/message_gateway/custom_events_admin_login.go (95%) rename {plugins => backend/plugins}/domain/message_gateway/errs.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/gateway_types.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/handlers.go (96%) rename {plugins => backend/plugins}/domain/message_gateway/logics.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/message_gateway_test.go (85%) rename {plugins => backend/plugins}/domain/message_gateway/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/message_gateway/models.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/pairing.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/pairing_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/plugin.go (91%) rename {plugins => backend/plugins}/domain/message_gateway/plugin_test.go (90%) rename {plugins => backend/plugins}/domain/message_gateway/push/custom.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/push/custom_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push/email.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/push/email_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push/lark.go (99%) rename {plugins => backend/plugins}/domain/message_gateway/push/push.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push/telegram.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/push/telegram_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push/template.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push/template_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push_channels.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/push_constants.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/push_events.go (97%) rename {plugins => backend/plugins}/domain/message_gateway/push_handlers.go (97%) rename {plugins => backend/plugins}/domain/message_gateway/push_logics.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/push_task_listener.go (95%) rename {plugins => backend/plugins}/domain/message_gateway/push_tasks.go (96%) rename {plugins => backend/plugins}/domain/message_gateway/registry.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/registry_test.go (100%) rename {plugins => backend/plugins}/domain/message_gateway/repository.go (98%) rename {plugins => backend/plugins}/domain/message_gateway/runner.go (95%) rename {plugins => backend/plugins}/domain/message_gateway/secret.go (94%) rename {plugins => backend/plugins}/domain/risk_control/logics.go (95%) rename {plugins => backend/plugins}/domain/risk_control/logstore/access_log.go (96%) rename {plugins => backend/plugins}/domain/risk_control/logstore/access_log_filter.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/access_log_stats.go (98%) rename {plugins => backend/plugins}/domain/risk_control/logstore/access_log_test.go (98%) rename {plugins => backend/plugins}/domain/risk_control/logstore/access_log_writer.go (93%) rename {plugins => backend/plugins}/domain/risk_control/logstore/browser.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/cleanup.go (98%) rename {plugins => backend/plugins}/domain/risk_control/logstore/clickhouse.go (98%) rename {plugins => backend/plugins}/domain/risk_control/logstore/gorm.go (99%) rename {plugins => backend/plugins}/domain/risk_control/logstore/gorm_test.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/imports_test.go (67%) rename {plugins => backend/plugins}/domain/risk_control/logstore/logstore.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/migrations-clickhouse/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/models.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/partition_cleanup.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/partition_cleanup_test.go (100%) rename {plugins => backend/plugins}/domain/risk_control/logstore/provider.go (96%) rename {plugins => backend/plugins}/domain/risk_control/middleware.go (87%) rename {plugins => backend/plugins}/domain/risk_control/middleware_test.go (93%) rename {plugins => backend/plugins}/domain/risk_control/models.go (100%) rename {plugins => backend/plugins}/domain/risk_control/plugin.go (96%) rename {plugins => backend/plugins}/domain/risk_control/plugin_test.go (89%) rename {plugins => backend/plugins}/domain/system/plugin.go (89%) rename {plugins => backend/plugins}/domain/upload/cache/access_cache.go (90%) rename {plugins => backend/plugins}/domain/upload/cache/access_cache_test.go (92%) rename {plugins => backend/plugins}/domain/upload/cache/meta_cache.go (93%) rename {plugins => backend/plugins}/domain/upload/cache/meta_cache_test.go (97%) rename {plugins => backend/plugins}/domain/upload/errs.go (96%) rename {plugins => backend/plugins}/domain/upload/exports.go (87%) rename {plugins => backend/plugins}/domain/upload/filesrv/file_server.go (92%) rename {plugins => backend/plugins}/domain/upload/filesrv/file_server_test.go (95%) rename {plugins => backend/plugins}/domain/upload/handler/file_management.go (94%) rename {plugins => backend/plugins}/domain/upload/handler/file_management_test.go (89%) rename {plugins => backend/plugins}/domain/upload/handler/logics.go (91%) rename {plugins => backend/plugins}/domain/upload/handler/routers.go (93%) rename {plugins => backend/plugins}/domain/upload/handler/routers_test.go (98%) rename {plugins => backend/plugins}/domain/upload/handler/stats.go (96%) rename {plugins => backend/plugins}/domain/upload/ingest/errors.go (85%) rename {plugins => backend/plugins}/domain/upload/ingest/helpers.go (88%) rename {plugins => backend/plugins}/domain/upload/ingest/ingest.go (92%) rename {plugins => backend/plugins}/domain/upload/ingest/ingest_test.go (97%) rename {plugins => backend/plugins}/domain/upload/ingest/remove.go (80%) rename {plugins => backend/plugins}/domain/upload/ingest/types.go (95%) rename {plugins => backend/plugins}/domain/upload/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/upload/models.go (91%) rename {plugins => backend/plugins}/domain/upload/models/models.go (100%) rename {plugins => backend/plugins}/domain/upload/plugin.go (92%) rename {plugins => backend/plugins}/domain/upload/repository.go (96%) rename {plugins => backend/plugins}/domain/upload/repository/repository.go (95%) rename {plugins => backend/plugins}/domain/upload/shared/constants.go (100%) rename {plugins => backend/plugins}/domain/upload/shared/errs.go (100%) rename {plugins => backend/plugins}/domain/upload/stats/category.go (94%) rename {plugins => backend/plugins}/domain/upload/stats/stats_counter.go (95%) rename {plugins => backend/plugins}/domain/upload/stats/stats_counter_test.go (93%) rename {plugins => backend/plugins}/domain/upload/storage/access_state.go (91%) rename {plugins => backend/plugins}/domain/upload/storage/migration.go (94%) rename {plugins => backend/plugins}/domain/upload/storage/storage_ops.go (79%) rename {plugins => backend/plugins}/domain/upload/task/cleanup.go (88%) rename {plugins => backend/plugins}/domain/upload/task/rebuild_stats.go (89%) rename {plugins => backend/plugins}/domain/upload/task/rebuild_stats_test.go (90%) rename {plugins => backend/plugins}/domain/upload/task/storage_migration.go (95%) rename {plugins => backend/plugins}/domain/upload/task/storage_migration_task_test.go (96%) rename {plugins => backend/plugins}/domain/upload/task/tasks.go (93%) rename {plugins => backend/plugins}/domain/upload/task/tasks_test.go (95%) rename {plugins => backend/plugins}/domain/upload/util/media.go (94%) rename {plugins => backend/plugins}/domain/upload/util/utils.go (96%) rename {plugins => backend/plugins}/domain/user/errs.go (100%) rename {plugins => backend/plugins}/domain/user/handlers.go (97%) rename {plugins => backend/plugins}/domain/user/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/domain/user/models.go (98%) rename {plugins => backend/plugins}/domain/user/plugin.go (86%) rename {plugins => backend/plugins}/domain/user/plugin_test.go (92%) rename {plugins => backend/plugins}/domain/user/repository.go (97%) rename {plugins => backend/plugins}/domain/user/service.go (96%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/errs.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/plugin.go (97%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/schedule.go (94%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/scheduler.go (96%) rename {plugins => backend/plugins}/drivers/driver_asynq_cron/scheduler_test.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/constants.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/errs.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/executor.go (98%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/executor_test.go (99%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/handler.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/meta.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/meta_test.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/migrations/00001_initial.sql (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/permanent_error.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/permanent_error_test.go (100%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/plugin.go (99%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/task_repo.go (94%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/types.go (98%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/utils.go (98%) rename {plugins => backend/plugins}/drivers/driver_asynq_worker/utils_test.go (96%) rename {plugins => backend/plugins}/drivers/driver_http/engine.go (91%) rename {plugins => backend/plugins}/drivers/driver_http/middlewares.go (91%) rename {plugins => backend/plugins}/drivers/driver_http/middlewares_test.go (98%) rename {plugins => backend/plugins}/drivers/driver_http/plugin.go (98%) rename {plugins => backend/plugins}/drivers/drivers_test.go (96%) rename {plugins => backend/plugins}/infra/cache/errs.go (100%) rename {plugins => backend/plugins}/infra/cache/plugin.go (96%) rename {plugins => backend/plugins}/infra/cache/plugin_test.go (92%) rename {plugins => backend/plugins}/infra/cache/redis.go (99%) rename {plugins => backend/plugins}/infra/cache/redis_test.go (100%) rename {plugins => backend/plugins}/infra/database/clickhouse.go (98%) rename {plugins => backend/plugins}/infra/database/plugin.go (95%) rename {plugins => backend/plugins}/infra/database/plugin_test.go (90%) rename {plugins => backend/plugins}/infra/database/postgres.go (99%) rename {plugins => backend/plugins}/infra/database/postgres_logger.go (98%) rename {plugins => backend/plugins}/infra/database/postgres_logger_test.go (100%) rename {plugins => backend/plugins}/infra/infra_test.go (95%) rename {plugins => backend/plugins}/infra/logger/plugin.go (95%) rename {plugins => backend/plugins}/infra/logger/plugin_test.go (86%) rename {plugins => backend/plugins}/infra/storage/diskcache/cache.go (95%) rename {plugins => backend/plugins}/infra/storage/diskcache/cache_test.go (91%) rename {plugins => backend/plugins}/infra/storage/objectstore/config.go (99%) rename {plugins => backend/plugins}/infra/storage/objectstore/http.go (95%) rename {plugins => backend/plugins}/infra/storage/objectstore/local.go (100%) rename {plugins => backend/plugins}/infra/storage/objectstore/local_test.go (100%) rename {plugins => backend/plugins}/infra/storage/objectstore/oss.go (100%) rename {plugins => backend/plugins}/infra/storage/objectstore/s3.go (100%) rename {plugins => backend/plugins}/infra/storage/objectstore/storage.go (96%) rename {plugins => backend/plugins}/infra/storage/objectstore/storage_test.go (98%) rename {plugins => backend/plugins}/infra/storage/objectstore/webdav.go (98%) rename {plugins => backend/plugins}/infra/storage/plugin.go (91%) rename {plugins => backend/plugins}/infra/storage/plugin_test.go (91%) diff --git a/.agents/skills/database-migration/SKILL.md b/.agents/skills/database-migration/SKILL.md index c652ab12..c589378d 100644 --- a/.agents/skills/database-migration/SKILL.md +++ b/.agents/skills/database-migration/SKILL.md @@ -15,7 +15,7 @@ description: "Wavelet 项目专用:当新增或修改数据库表结构、索 每个插件在自身包内维护专属的 `migrations/` 目录,通过 Go 语言内置 `//go:embed` 打包为嵌入式文件系统,并在 `Apply(ctx *core.Context)` 时通过微内核扩展点 `ctx.Migrations().Register(...)` 自主注入。 ``` -plugins/domain/order/ +backend/plugins/domain/order/ ├── plugin.go ├── models.go └── migrations/ @@ -33,7 +33,7 @@ package order import ( "embed" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" ) //go:embed migrations/*.sql @@ -183,6 +183,6 @@ go test ./plugins/... ```bash # 检查每个有 migrations/ 目录的插件是否同时有 go:embed + Register() -grep -rn 'go:embed.*migrations' plugins/domain/*/plugin.go plugins/drivers/*/plugin.go -grep -rn 'Migrations()\.Register' plugins/domain/*/plugin.go plugins/drivers/*/plugin.go +grep -rn 'go:embed.*migrations' backend/plugins/domain/*/plugin.go backend/plugins/drivers/*/plugin.go +grep -rn 'Migrations()\.Register' backend/plugins/domain/*/plugin.go backend/plugins/drivers/*/plugin.go ``` \ No newline at end of file diff --git a/.agents/skills/file-upload/SKILL.md b/.agents/skills/file-upload/SKILL.md index b17b0dc8..b3a84bb9 100644 --- a/.agents/skills/file-upload/SKILL.md +++ b/.agents/skills/file-upload/SKILL.md @@ -84,7 +84,7 @@ import ( "bytes" "github.com/Rain-kl/Wavelet/internal/apps/upload" - "github.com/Rain-kl/Wavelet/pkg/model" + "github.com/Rain-kl/Wavelet/backend/pkg/model" ) func ingestMirrorFile(ctx context.Context, userID uint64, data []byte, hash, filename, mime, ext string) (model.Upload, error) { diff --git a/.agents/skills/new-api/SKILL.md b/.agents/skills/new-api/SKILL.md index f2e9faaf..8ef2fa32 100644 --- a/.agents/skills/new-api/SKILL.md +++ b/.agents/skills/new-api/SKILL.md @@ -14,10 +14,10 @@ description: "Wavelet 项目专用:当新增或修改业务 API、Handler、 在 Cordis 架构中,**业务 API 不再集中在旧的 `internal/router/` 或 `internal/apps/` 目录**。 所有业务能力均封装为**高内聚、扁平自包含的插件 (Plugin)**。每个插件自主管理自身的路由声明、中间件挂载、服务逻辑、数据模型与迁移脚本。 -### 插件目录推荐结构 (`plugins/domain//` 或下游 `custom_plugins//`) +### 插件目录推荐结构 (`backend/plugins/domain//` 或下游 `custom_plugins//`) ```text -plugins/domain/order/ +backend/plugins/domain/order/ ├── plugin.go # 插件入口:实现 core.Plugin,通过 ctx.Router() 挂载路由 ├── handlers.go # HTTP 控制器:参数校验、上下文提取、调用 Service、信封响应 ├── service.go # 业务服务层:纯 Go 逻辑,仅依赖 context.Context @@ -39,8 +39,8 @@ plugins/domain/order/ package order import ( - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" ) type Plugin struct { diff --git a/.agents/skills/new-async-task/SKILL.md b/.agents/skills/new-async-task/SKILL.md index d6672c9e..db6651ff 100644 --- a/.agents/skills/new-async-task/SKILL.md +++ b/.agents/skills/new-async-task/SKILL.md @@ -26,7 +26,7 @@ description: "Wavelet 项目专用:新增或修改基于 Cordis 插件的 Asyn ### 步骤 1:定义任务 Payload 结构与类型常量 -在插件内(如 `plugins/domain/order/tasks.go`): +在插件内(如 `backend/plugins/domain/order/tasks.go`): ```go package order diff --git a/.agents/skills/new-async-task/references/CODE-EXAMPLES.md b/.agents/skills/new-async-task/references/CODE-EXAMPLES.md index 699b2bc8..454372d0 100644 --- a/.agents/skills/new-async-task/references/CODE-EXAMPLES.md +++ b/.agents/skills/new-async-task/references/CODE-EXAMPLES.md @@ -6,7 +6,7 @@ ## 1. 任务定义与 Handler 编写 -在对应的业务插件中(如 `plugins/domain/user/tasks.go`): +在对应的业务插件中(如 `backend/plugins/domain/user/tasks.go`): ```go package user @@ -61,8 +61,8 @@ package user import ( "time" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) func (p *Plugin) Apply(ctx *core.Context) error { diff --git a/.agents/skills/push-notification/SKILL.md b/.agents/skills/push-notification/SKILL.md index d82ce14c..c860b9e1 100644 --- a/.agents/skills/push-notification/SKILL.md +++ b/.agents/skills/push-notification/SKILL.md @@ -15,7 +15,7 @@ Wavelet 的消息推送机制采用了**元数据驱动 + 统一触发器 + 异 | 目录/包名 | 职责定位 | 包含内容与设计细节 | | :--- | :--- | :--- | -| **`plugins/domain/message_gateway/push/`** | 推送基础设施层 | 静态定义、不依赖系统数据库和任何框架。定义了统一接口 `Pusher` 和多实现(Lark, Webhook, Email 等),提供配置验证及发送功能。 | +| **`backend/plugins/domain/message_gateway/push/`** | 推送基础设施层 | 静态定义、不依赖系统数据库和任何框架。定义了统一接口 `Pusher` 和多实现(Lark, Webhook, Email 等),提供配置验证及发送功能。 | | **`internal/apps/admin/push/`** | 通知服务与后台任务层 | 包含以下核心文件:
1. `events.go`:定义通知事件的结构模型(`NotificationMessage`, `EventMetadata`)、内置事件的动态注册中心(`BuiltInEvents` 及 `RegisterBuiltInEvent` 函数)以及统一触发器类 `EventTrigger`(包括其底层的派发引擎逻辑)。
2. `tasks.go`:定义 Asynq 后台异步发送任务、处理器 `PushHandler` 及其校验逻辑,并记录推送历史审计。
3. `routers.go`:管理端接口,负责获取事件配置列表和更新配置。 | | **`internal/apps/admin/push/custom_events/`** | 自定义通知事件包 | 事件元数据定义与 push 侧处理逻辑;**一个 Go 文件代表一个事件**。在 `register.go` 统一装配,禁止 `init()` 副作用。 | | **`internal/listener/`** | 域事件分发层 | 核心域发射事件(如 `EmitAdminLoggedIn`),push 在 bootstrap 阶段通过 `OnAdminLoggedIn` 订阅,避免 auth/user 直接依赖 push。 | @@ -39,7 +39,7 @@ import ( "time" "github.com/Rain-kl/Wavelet/internal/apps/admin/push" - "github.com/Rain-kl/Wavelet/pkg/listener" + "github.com/Rain-kl/Wavelet/backend/pkg/listener" ) var NewUserRegistered = push.EventMetadata{ @@ -84,7 +84,7 @@ func Register() { 在业务逻辑完成处(如 `internal/apps/user/routers.go`)仅 import `internal/listener` 并发射事件: ```go -import "github.com/Rain-kl/Wavelet/pkg/listener" +import "github.com/Rain-kl/Wavelet/backend/pkg/listener" func Register(c *gin.Context) { // ... 注册成功逻辑 ... diff --git a/AGENTS.md b/AGENTS.md index 5c988812..e9b9ca5a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -87,24 +87,24 @@ Strong success criteria let you loop independently. Weak criteria ("make it work ## 严格遵循事项 (Guardrails) - 切勿删除 `frontend/node_modules`。 -- 保持 `pkg/util/` 绝对纯净,禁止导入 Gin、GORM、sessions 等 Web/数据库框架包。 +- 保持 `backend/pkg/util/` 绝对纯净,禁止导入 Gin、GORM、sessions 等 Web/数据库框架包。 - 测试用例禁止硬编码相对路径创建临时目录,统一使用 Go 内置 `t.TempDir()`。 - 修改 API Handler 后运行 `make swagger`,完成代码开发后必须依次运行 `make code-check` 与 `make format`。 ### Cordis 架构核心防线与分层规范 -- **微内核 (`core/`)**: +- **微内核 (`backend/core/`)**: - 上下文总线(`Context`)、泛型依赖注入(`Container`)、生命周期编排(`Lifecycle`)、扩展点定义(`extpoints/`)与领域事件总线(`EventBus`)。 - **严禁**包含任何具体业务逻辑,**严禁** import `gin`、`gorm`、`asynq` 等具体运行时依赖。 -- **服务契约 (`core/contracts/`)**: +- **服务契约 (`backend/core/contracts/`)**: - 跨插件通信的统一公开 Go Interface(如 `AuthService`、`UserService`、`CacheService`、`DBService`、`StorageService`)与公共 DTO。 - **严禁**包含任何具体业务实现或 SQL 操作。 -- **自包含插件 (`plugins/`)**: - - 所有业务功能与驱动实现均以扁平自包含插件形式存在(`plugins/drivers/`、`plugins/infra/`、`plugins/domain/` 或下游 `custom_plugins/`)。 +- **自包含插件 (`backend/plugins/`)**: + - 所有业务功能与驱动实现均以扁平自包含插件形式存在(`backend/plugins/drivers/`、`backend/plugins/infra/`、`backend/plugins/domain/` 或下游 `backend/downstream/`)。 - 每个插件实现 `core.Plugin`(`Name() string` 与 `Apply(ctx *core.Context) error`)。 - 插件内部就近组织 Handler、Service、Model 与 Migration。 - **插件通信与依赖隔离**: - **严禁跨包 import internal/私有实现**:插件之间严禁直接 import 对方具体实现包代码。 - - **单向服务契约调用**:调用方仅面向 `core/contracts` 编程,在 `Apply` 中通过 `core.Provide[contracts.XxxService](ctx, svc)` 注册服务,通过 `core.Inject[contracts.XxxService](ctx)` 或 `ctx.Using(func(svc contracts.XxxService) { ... })` 声明式解析。 + - **单向服务契约调用**:调用方仅面向 `backend/core/contracts` 编程,在 `Apply` 中通过 `core.Provide[contracts.XxxService](ctx, svc)` 注册服务,通过 `core.Inject[contracts.XxxService](ctx)` 或 `ctx.Using(func(svc contracts.XxxService) { ... })` 声明式解析。 - **事件总线广播**:状态联动与解耦通信统一通过强类型事件 `ctx.Events().Emit()` 广播,由感兴趣的插件通过 `ctx.Events().On()` 订阅,消除双向依赖与循环引用。 - **扩展点自包含注册**: - **HTTP 路由**:插件自包含在 `Apply` 中通过 `ctx.Router().Group(...)` 挂载路由与中间件,禁止跨插件散落注册。 @@ -124,18 +124,18 @@ Strong success criteria let you loop independently. Weak criteria ("make it work ### API 响应规范 - **统一信封**:`{ "error_msg": "", "data": ... }` - **成功**:HTTP 200,写出 `c.JSON(http.StatusOK, response.OK(data))` 或 `response.OKNil()`。 -- **失败**:使用 `internal/shared/response` 的 `Abort*` 系列函数(如 `AbortBadRequest`、`AbortUnauthorized`、`AbortNotFound`、`AbortInternal`)中断请求。 +- **失败**:使用 `backend/pkg/response` 的 `Abort*` 系列函数(如 `AbortBadRequest`、`AbortUnauthorized`、`AbortNotFound`、`AbortInternal`)中断请求。 - **错误文案**:使用模块内 `errs.go` 中的 camelCase 字符串常量(如 `errBindParamsFailed`),禁止暴露底层数据库/系统错误细节给客户端。 - **Service/Logics 分工**:业务逻辑层只接受 `context.Context`,返回 `(result, error)`,严禁依赖 `*gin.Context` 或调用 `c.JSON`/`Abort*`。 -- **错误日志**:底层错误在 Handler/Logic 边界用 `pkg/logger` 打印日志,禁止使用 `_ = ...` 静默吞掉关键错误。 +- **错误日志**:底层错误在 Handler/Logic 边界用 `backend/pkg/logger` 打印日志,禁止使用 `_ = ...` 静默吞掉关键错误。 ### 数据库操作 - 插件数据库表结构严禁使用 GORM AutoMigrate,统一编写 Goose SQL 迁移并嵌入二进制。 - 不创建物理外键(显式建索引);Go 模型零值需与数据库默认值匹配。 -- **SQL LIKE 查询防注入与转义**:所有含用户输入的模糊查询必须调用 `pkg/util.EscapeLike` 转义通配符,并显式指定 `ESCAPE '\\'` 语法(如 `Where("username LIKE ? ESCAPE '\\'", util.EscapeLike(keyword)+"%")`),同时兼容 PostgreSQL 与 SQLite 方言并杜绝通配符注入攻击。 +- **SQL LIKE 查询防注入与转义**:所有含用户输入的模糊查询必须调用 `backend/pkg/util.EscapeLike` 转义通配符,并显式指定 `ESCAPE '\\'` 语法(如 `Where("username LIKE ? ESCAPE '\\'", util.EscapeLike(keyword)+"%")`),同时兼容 PostgreSQL 与 SQLite 方言并杜绝通配符注入攻击。 ### 并发与安全防护规范 -- **Goroutine 安全**:禁止直接使用裸 `go func()`;统一使用 `pkg/util.Go`,确保具备未捕获 panic 恢复和调用栈日志记录能力。 +- **Goroutine 安全**:禁止直接使用裸 `go func()`;统一使用 `backend/pkg/util.Go`,确保具备未捕获 panic 恢复和调用栈日志记录能力。 - **Pub/Sub 监听并发安全**:启动 Redis Pub/Sub 订阅监听前,必须捕获局部客户端实例,禁止在 goroutine 闭包中直读可变全局变量;提供停止监听接口时必须维护 `done` 通道等待 goroutine 完整退出后再重置状态,消除数据竞争。 - **Session 固定攻击防御**:用户登录/授权成功后,必须调用 Session 轮换逻辑,防止 Session 固定攻击。 - **防账户枚举与时序攻击**: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md deleted file mode 100644 index edcb6683..00000000 --- a/CONTRIBUTING.md +++ /dev/null @@ -1,142 +0,0 @@ -# 贡献指南 - -感谢您有兴趣为本项目做出贡献!我们欢迎各种形式的贡献,但请先阅读如下文档,以节省您和我们的时间。 - -当您在使用 Claude Code, Gemini CLI 等 Vibe-coding 工具时,推荐将此文档内容附加到上下文内。 - -## 我们不接受的更改 - -出于包括但不限于项目可持续性与可维护性考虑,我们不接受如下类型的更改。 -如果您提交的 PR 包含以下类型的更改,我们可能会包括但不限于忽略、关闭或要求您更改 PR 内容。 - -- 导致项目整体性能下降的更改; -- 仅修改注释、空格、格式的小 PR; -- 仅修正无影响力的拼写错误(typo)或代码注释,不提升可读性或准确性; -- 重构已稳定工作的逻辑而不带来可维护性或功能上的实质提升; -- 未经讨论的接口或 API 命名改动; - -**请注意:判断标准不是改动大小,而是改动是否有实际作用。** - -为提高协作效率,我们建议您在提交 PR 前,先通过 Issue 简要说明动机与背景。 - - -## 贡献步骤 - -1. **Fork 本仓库** 并创建您的分支(建议使用有意义的分支名)。 -2. **编写代码**,确保遵循项目的代码风格和最佳实践。 -3. **添加/更新测试**,确保您的更改不会破坏现有功能。 -4. **本地测试**,确认所有测试通过。 -5. **提交 Pull Request**,请详细描述您的更改内容和动机。 - - -## 代码规范 - -### 后端 - -**基础检查** - -需要通过 CodeQL 扫描,较长的代码建议增加 Copilot 检查。 - -**API 文档** - -所有接口需要写 Swagger 文档,提交前通过 make swagger 更新文档后再提交。 - -**响应格式** - -```json -# 响应数据最外层有两个字段,error_msg 和 data -{ - "error_msg": "", - "data": null -} - -# 如果是非列表数据 -{ - "error_msg": "", - "data": {} -} - -# 如果是分页数据 -{ - "error_msg": "", - "data": { - "total": 0, - "results": [] - } -} -``` - -**数据库** - -- 禁止使用外键,但需要保留对应字段的索引; -- 字段如有默认值,需要与 struct 默认值相同,如 nil,0,false,空字符串等,避免初始化时未填写或漏填写导致的数据异常。 - -### 前端 - -**基础检查** - -代码需要通过 ESLint 检查和 CodeQL 扫描。 - -**类型安全** - -- 禁止使用 `any` 类型,`any` 类型绕过了 TypeScript 的类型检查系统,会导致潜在的运行时错误; -- `unknown` 是类型安全的 `any`,但必须立即进行类型断言或类型收窄; -- `never` 类型表示永远不会发生的值类型,必须谨慎使用,并提供清晰的注释说明。 - -**组件规范** - -- 组件应按功能分类 -- 公共组件放在 `components/common` 目录 -- ShadcnUI 组件放在 `components/ui` 目录 -- 自定义图标应放置在 `/components/icons/` 目录下以命名导出形式管理,对于常规的图标,我们使用 Lucide 库 - -**服务层** - -服务层架构是前端与API交互的统一入口,基于以下原则: -1. 关注点分离 - 每个服务负责一个业务领域 -2. 统一入口 - 通过services对象导出所有服务 -3. 类型安全 - 所有请求和响应有明确类型定义 - - -**如何新建接口服务** - -1. **创建目录结构**: - ``` - /services/新服务名/ - - types.ts // 类型定义 - - 服务名.service.ts // 服务实现 - - index.ts // 导出服务 - ``` - -2. **实现服务类**: - ```typescript - // 新服务名/服务名.service.ts - import {BaseService} from '../core/base.service'; - - export class 新服务类 extends BaseService { - protected static readonly basePath = '/api/v1/路径'; - - static async 方法名(参数): Promise<返回类型> { - return this.get<返回类型>('/endpoint'); - } - } - ``` - -3. **在services/index.ts注册**: - ```typescript - import {新服务类} from './新服务名'; - - const services = { - auth: AuthService, - 新服务名: 新服务类 - }; - ``` - -**使用方法** - -```typescript -import services from '@/lib/services'; - -// 调用服务方法 -const 结果 = await services.新服务名.方法名(参数); -``` \ No newline at end of file diff --git a/Makefile b/Makefile index a82de00b..797bcbec 100644 --- a/Makefile +++ b/Makefile @@ -25,52 +25,52 @@ build-embedded: NEXT_PUBLIC_APP_VERSION="$(VERSION)" \ NEXT_PUBLIC_APP_BUILD_DATE="$(BUILD_DATE)" \ pnpm build:embed - rm -rf plugins/drivers/driver_http/dist - cp -R frontend/out plugins/drivers/driver_http/dist + rm -rf backend/plugins/drivers/driver_http/dist + cp -R frontend/out backend/plugins/drivers/driver_http/dist go build \ -tags embed_frontend \ - -ldflags "-s -w -X '$(MODULE)/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \ + -ldflags "-s -w -X '$(MODULE)/backend/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/backend/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \ -o bin/wavelet \ - main.go + backend/main.go code-check: @echo "==> Architecture guards..." @command -v rg >/dev/null 2>&1 || { echo 'error: rg (ripgrep) is required for architecture guards' >&2; exit 1; } @echo " → core/ must not import gin, gorm, asynq..." - @if rg -n '"github.com/gin-gonic/gin|"gorm.io/gorm|"github.com/hibiken/asynq' core/ --glob '*.go' -g '!*_test.go' 2>/dev/null; then \ - echo 'error: core/ must not import gin, gorm, or asynq' >&2; \ + @if rg -n '"github.com/gin-gonic/gin|"gorm.io/gorm|"github.com/hibiken/asynq' backend/core/ --glob '*.go' -g '!*contracts*' -g '!*_test.go' 2>/dev/null; then \ + echo 'error: backend/core/ must not import gin, gorm, or asynq' >&2; \ exit 1; \ fi @echo " → core/contracts/ must not import plugins/..." - @if rg -n 'plugins/' core/contracts --glob '*.go' 2>/dev/null; then \ - echo 'error: core/contracts/ must not import plugins/' >&2; \ + @if rg -n 'plugins/' backend/core/contracts --glob '*.go' 2>/dev/null; then \ + echo 'error: backend/core/contracts/ must not import plugins/' >&2; \ exit 1; \ fi @echo " → pkg/ must not import plugins/..." - @if rg -n 'plugins/' pkg --glob '*.go' -g '!*_test.go' 2>/dev/null; then \ - echo 'error: pkg/ must not import plugins/' >&2; \ + @if rg -n 'plugins/' backend/pkg --glob '*.go' -g '!*testhelper*' -g '!*_test.go' 2>/dev/null; then \ + echo 'error: backend/pkg/ must not import plugins/' >&2; \ exit 1; \ fi @echo " → plugins/domain/ must not import other plugins/domain/..." - @for d in plugins/domain/*/; do \ + @for d in backend/plugins/domain/*/; do \ name=$$(basename $$d); \ - imports=$$(rg -n '"github.com/Rain-kl/Wavelet/plugins/domain/' plugins/domain/"$$name" -g '*.go' 2>/dev/null | rg -v "plugins/domain/$$name/" | rg -v '_test.go' || true); \ + imports=$$(rg -n '"github.com/Rain-kl/Wavelet/backend/plugins/domain/' backend/plugins/domain/"$$name" -g '*.go' 2>/dev/null | rg -v "backend/plugins/domain/$$name/" | rg -v '_test.go' || true); \ if [ -n "$$imports" ]; then \ - echo "error: plugins/domain/$$name must not import other domain plugins" >&2; \ + echo "error: backend/plugins/domain/$$name must not import other domain plugins" >&2; \ echo "$$imports" >&2; \ exit 1; \ - fi; \ + fi; \ done @echo " → Architecture guards PASS" - golangci-lint run + golangci-lint run ./backend/... cd frontend && pnpm tsc --noEmit --jsx preserve && npx eslint . --max-warnings 0 build-backend: @echo "==> Building backend version=$(VERSION) build_date=$(BUILD_DATE)..." go build \ - -ldflags "-s -w -X '$(MODULE)/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \ + -ldflags "-s -w -X '$(MODULE)/backend/pkg/buildinfo.Version=$(VERSION)' -X '$(MODULE)/backend/pkg/buildinfo.BuildTime=$(BUILD_DATE)'" \ -o bin/wavelet \ - main.go + backend/main.go build-frontend: @echo "==> Building frontend version=$(VERSION) build_date=$(BUILD_DATE)..." diff --git a/NOTICE b/NOTICE deleted file mode 100644 index 9401edbb..00000000 --- a/NOTICE +++ /dev/null @@ -1,9 +0,0 @@ -Wavelet - -This product includes software derived from LinuxDO Credit. - -LinuxDO Credit: -Copyright 2025 linux.do -Licensed under the Apache License, Version 2.0. - -This distribution includes modifications by Arctel.net. diff --git a/cmd/all.go b/backend/cmd/all.go similarity index 91% rename from cmd/all.go rename to backend/cmd/all.go index 6f7df684..91a284c7 100644 --- a/cmd/all.go +++ b/backend/cmd/all.go @@ -8,7 +8,7 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" "github.com/spf13/cobra" ) diff --git a/cmd/api.go b/backend/cmd/api.go similarity index 90% rename from cmd/api.go rename to backend/cmd/api.go index 5c0b8d43..1b32df34 100644 --- a/cmd/api.go +++ b/backend/cmd/api.go @@ -7,7 +7,7 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" "github.com/spf13/cobra" ) diff --git a/cmd/app.go b/backend/cmd/app.go similarity index 85% rename from cmd/app.go rename to backend/cmd/app.go index 4de75759..5463ba3b 100644 --- a/cmd/app.go +++ b/backend/cmd/app.go @@ -10,24 +10,24 @@ import ( "log" "time" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/plugins/domain/admin" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - "github.com/Rain-kl/Wavelet/plugins/domain/cap" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" - "github.com/Rain-kl/Wavelet/plugins/domain/system" - "github.com/Rain-kl/Wavelet/plugins/domain/upload" - "github.com/Rain-kl/Wavelet/plugins/domain/user" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_cron" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_http" - "github.com/Rain-kl/Wavelet/plugins/infra/cache" - infradb "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/infra/logger" - "github.com/Rain-kl/Wavelet/plugins/infra/storage" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/admin" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/cap" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/system" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/user" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_cron" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_http" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + infradb "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage" "github.com/pressly/goose/v3" goosedb "github.com/pressly/goose/v3/database" ) @@ -104,6 +104,7 @@ func (s *sharedStore) CreateVersionTable(ctx context.Context, db goosedb.DBTxCon return err } +//nolint:mnd func (s *sharedStore) Insert(ctx context.Context, db goosedb.DBTxConn, req goosedb.InsertRequest) error { p := s.placeholder _, err := db.ExecContext(ctx, @@ -112,6 +113,7 @@ func (s *sharedStore) Insert(ctx context.Context, db goosedb.DBTxConn, req goose return err } +//nolint:mnd func (s *sharedStore) Delete(ctx context.Context, db goosedb.DBTxConn, version int64) error { p := s.placeholder _, err := db.ExecContext(ctx, @@ -120,6 +122,7 @@ func (s *sharedStore) Delete(ctx context.Context, db goosedb.DBTxConn, version i return err } +//nolint:mnd func (s *sharedStore) GetMigration(ctx context.Context, db goosedb.DBTxConn, version int64) (*goosedb.GetMigrationResult, error) { p := s.placeholder var t time.Time @@ -155,7 +158,7 @@ func (s *sharedStore) ListMigrations(ctx context.Context, db goosedb.DBTxConn) ( if err != nil { return nil, err } - defer rows.Close() + defer func() { _ = rows.Close() }() var results []*goosedb.ListMigrationsResult for rows.Next() { @@ -247,4 +250,4 @@ func gooseDialect() goose.Dialect { return goose.DialectSQLite3 } return goose.DialectPostgres -} \ No newline at end of file +} diff --git a/cmd/app_test.go b/backend/cmd/app_test.go similarity index 97% rename from cmd/app_test.go rename to backend/cmd/app_test.go index d653d256..ca4929ed 100644 --- a/cmd/app_test.go +++ b/backend/cmd/app_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" ) func TestNewWaveletAppProfiles(t *testing.T) { diff --git a/cmd/banner.go b/backend/cmd/banner.go similarity index 92% rename from cmd/banner.go rename to backend/cmd/banner.go index 22b55c16..4c0e5461 100644 --- a/cmd/banner.go +++ b/backend/cmd/banner.go @@ -12,8 +12,8 @@ import ( "runtime" "strings" - "github.com/Rain-kl/Wavelet/pkg/buildinfo" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/buildinfo" + "github.com/Rain-kl/Wavelet/backend/pkg/config" ) //nolint:unused // startup banner formatting utilities @@ -52,4 +52,4 @@ func buildTime() string { return "development build" } return buildinfo.BuildTime -} \ No newline at end of file +} diff --git a/cmd/banner_test.go b/backend/cmd/banner_test.go similarity index 90% rename from cmd/banner_test.go rename to backend/cmd/banner_test.go index 4ed9c5e3..0d31cd5f 100644 --- a/cmd/banner_test.go +++ b/backend/cmd/banner_test.go @@ -7,8 +7,8 @@ import ( "strings" "testing" - "github.com/Rain-kl/Wavelet/pkg/buildinfo" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/buildinfo" + "github.com/Rain-kl/Wavelet/backend/pkg/config" ) func TestFormatStartupBanner(t *testing.T) { @@ -44,4 +44,4 @@ func TestFormatStartupBanner(t *testing.T) { t.Errorf("banner missing %q:\n%s", want, banner) } } -} \ No newline at end of file +} diff --git a/cmd/reset_passwd.go b/backend/cmd/reset_passwd.go similarity index 93% rename from cmd/reset_passwd.go rename to backend/cmd/reset_passwd.go index dcbe9bf9..03a263f8 100644 --- a/cmd/reset_passwd.go +++ b/backend/cmd/reset_passwd.go @@ -13,10 +13,10 @@ import ( "os" "strings" - userdomain "github.com/Rain-kl/Wavelet/plugins/domain/user" - "github.com/Rain-kl/Wavelet/plugins/infra/database" + userdomain "github.com/Rain-kl/Wavelet/backend/plugins/domain/user" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" "github.com/spf13/cobra" "gorm.io/gorm" ) diff --git a/cmd/reset_passwd_test.go b/backend/cmd/reset_passwd_test.go similarity index 97% rename from cmd/reset_passwd_test.go rename to backend/cmd/reset_passwd_test.go index a10d8dbe..5b953086 100644 --- a/cmd/reset_passwd_test.go +++ b/backend/cmd/reset_passwd_test.go @@ -10,8 +10,8 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - userdomain "github.com/Rain-kl/Wavelet/plugins/domain/user" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + userdomain "github.com/Rain-kl/Wavelet/backend/plugins/domain/user" ) func TestResetPasswdCmd_WithUserAndPassword(t *testing.T) { diff --git a/cmd/root.go b/backend/cmd/root.go similarity index 89% rename from cmd/root.go rename to backend/cmd/root.go index 3fd1b846..b2670709 100644 --- a/cmd/root.go +++ b/backend/cmd/root.go @@ -9,10 +9,10 @@ import ( "log" "time" - "github.com/Rain-kl/Wavelet/pkg/buildinfo" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/buildinfo" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/trace" "github.com/spf13/cobra" ) @@ -65,4 +65,4 @@ func Execute() { if err := rootCmd.Execute(); err != nil { log.Fatalf("[CMD] execute failed; %s\n", err) } -} \ No newline at end of file +} diff --git a/cmd/scheduler.go b/backend/cmd/scheduler.go similarity index 90% rename from cmd/scheduler.go rename to backend/cmd/scheduler.go index 3f444f15..85cff5bf 100644 --- a/cmd/scheduler.go +++ b/backend/cmd/scheduler.go @@ -7,7 +7,7 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" "github.com/spf13/cobra" ) diff --git a/cmd/worker.go b/backend/cmd/worker.go similarity index 90% rename from cmd/worker.go rename to backend/cmd/worker.go index 372f9c2e..05b77668 100644 --- a/cmd/worker.go +++ b/backend/cmd/worker.go @@ -7,7 +7,7 @@ package cmd import ( "log" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" "github.com/spf13/cobra" ) diff --git a/core/app.go b/backend/core/app.go similarity index 100% rename from core/app.go rename to backend/core/app.go diff --git a/core/app_test.go b/backend/core/app_test.go similarity index 99% rename from core/app_test.go rename to backend/core/app_test.go index 327a3e58..a35b86d6 100644 --- a/core/app_test.go +++ b/backend/core/app_test.go @@ -14,8 +14,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) // appMockDriver is a test driver tracking its start/stop lifecycle. diff --git a/core/container.go b/backend/core/container.go similarity index 100% rename from core/container.go rename to backend/core/container.go diff --git a/core/context.go b/backend/core/context.go similarity index 99% rename from core/context.go rename to backend/core/context.go index d9341896..9976f6f8 100644 --- a/core/context.go +++ b/backend/core/context.go @@ -10,7 +10,7 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) // Context is the central micro-kernel service bus and runtime lifecycle container. diff --git a/core/context_test.go b/backend/core/context_test.go similarity index 99% rename from core/context_test.go rename to backend/core/context_test.go index 6bdf2a7e..d67f76dc 100644 --- a/core/context_test.go +++ b/backend/core/context_test.go @@ -15,7 +15,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" ) // Sample services for testing diff --git a/core/contracts/auth.go b/backend/core/contracts/auth.go similarity index 95% rename from core/contracts/auth.go rename to backend/core/contracts/auth.go index f4ade9ba..75bf61dd 100644 --- a/core/contracts/auth.go +++ b/backend/core/contracts/auth.go @@ -92,9 +92,9 @@ type AuthRegistry interface { // Auth context keys — stored in Gin context by auth middleware, consumed by domain plugins. const ( - AuthUserIDKey = "user_id" - AuthUserNameKey = "username" - AuthUserObjKey = "user_obj" - AuthTokenAuthKey = "token_auth" // marks if request uses access token auth + AuthUserIDKey = "user_id" + AuthUserNameKey = "username" + AuthUserObjKey = "user_obj" + AuthTokenAuthKey = "token_auth" // marks if request uses access token auth AuthTokenAdminKey = "token_admin" // whether the access token has admin privileges ) diff --git a/core/contracts/cache.go b/backend/core/contracts/cache.go similarity index 100% rename from core/contracts/cache.go rename to backend/core/contracts/cache.go diff --git a/core/contracts/database.go b/backend/core/contracts/database.go similarity index 100% rename from core/contracts/database.go rename to backend/core/contracts/database.go diff --git a/core/contracts/events.go b/backend/core/contracts/events.go similarity index 99% rename from core/contracts/events.go rename to backend/core/contracts/events.go index cc63bbae..1c372b79 100644 --- a/core/contracts/events.go +++ b/backend/core/contracts/events.go @@ -106,4 +106,4 @@ type NotificationSentEvent struct { Title string `json:"title"` Success bool `json:"success"` ErrorInfo string `json:"error_info,omitempty"` -} \ No newline at end of file +} diff --git a/core/contracts/logger.go b/backend/core/contracts/logger.go similarity index 100% rename from core/contracts/logger.go rename to backend/core/contracts/logger.go diff --git a/core/contracts/storage.go b/backend/core/contracts/storage.go similarity index 100% rename from core/contracts/storage.go rename to backend/core/contracts/storage.go diff --git a/core/contracts/user.go b/backend/core/contracts/user.go similarity index 100% rename from core/contracts/user.go rename to backend/core/contracts/user.go diff --git a/core/events.go b/backend/core/events.go similarity index 100% rename from core/events.go rename to backend/core/events.go diff --git a/core/events_test.go b/backend/core/events_test.go similarity index 99% rename from core/events_test.go rename to backend/core/events_test.go index 48ed0856..4d347b2b 100644 --- a/core/events_test.go +++ b/backend/core/events_test.go @@ -14,7 +14,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" ) type UserRegisteredEvent struct { diff --git a/core/extpoints/extpoints_test.go b/backend/core/extpoints/extpoints_test.go similarity index 98% rename from core/extpoints/extpoints_test.go rename to backend/core/extpoints/extpoints_test.go index b0853630..11a35591 100644 --- a/core/extpoints/extpoints_test.go +++ b/backend/core/extpoints/extpoints_test.go @@ -12,8 +12,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) func TestRouterExtension(t *testing.T) { diff --git a/core/extpoints/migration.go b/backend/core/extpoints/migration.go similarity index 100% rename from core/extpoints/migration.go rename to backend/core/extpoints/migration.go diff --git a/core/extpoints/router.go b/backend/core/extpoints/router.go similarity index 100% rename from core/extpoints/router.go rename to backend/core/extpoints/router.go diff --git a/core/extpoints/schedule.go b/backend/core/extpoints/schedule.go similarity index 100% rename from core/extpoints/schedule.go rename to backend/core/extpoints/schedule.go diff --git a/core/extpoints/setting.go b/backend/core/extpoints/setting.go similarity index 100% rename from core/extpoints/setting.go rename to backend/core/extpoints/setting.go diff --git a/core/extpoints/task.go b/backend/core/extpoints/task.go similarity index 100% rename from core/extpoints/task.go rename to backend/core/extpoints/task.go diff --git a/core/manifest.go b/backend/core/manifest.go similarity index 100% rename from core/manifest.go rename to backend/core/manifest.go diff --git a/core/types.go b/backend/core/types.go similarity index 99% rename from core/types.go rename to backend/core/types.go index 2197a9ca..729d261b 100644 --- a/core/types.go +++ b/backend/core/types.go @@ -7,7 +7,7 @@ import ( "context" "errors" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) // Standard sentinel errors returned by core operations. diff --git a/downstream/README.md b/backend/downstream/README.md similarity index 100% rename from downstream/README.md rename to backend/downstream/README.md diff --git a/downstream/plugins/custom_example/plugin.go b/backend/downstream/plugins/custom_example/plugin.go similarity index 83% rename from downstream/plugins/custom_example/plugin.go rename to backend/downstream/plugins/custom_example/plugin.go index 057061ac..44069df0 100644 --- a/downstream/plugins/custom_example/plugin.go +++ b/backend/downstream/plugins/custom_example/plugin.go @@ -6,8 +6,10 @@ package custom_example import ( - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" + "net/http" + + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" "github.com/gin-gonic/gin" ) @@ -38,11 +40,11 @@ func (p *Plugin) Apply(ctx *core.Context) error { g.GET("/hello", func(c *gin.Context) { user, err := authSvc.GetCurrentUser(c.Request.Context()) if err != nil { - c.JSON(401, gin.H{"error": "unauthorized"}) + c.JSON(http.StatusUnauthorized, gin.H{"error": "unauthorized"}) return } - c.JSON(200, gin.H{"message": "Hello " + user.Username}) + c.JSON(http.StatusOK, gin.H{"message": "Hello " + user.Username}) }) return nil -} \ No newline at end of file +} diff --git a/main.go b/backend/main.go similarity index 92% rename from main.go rename to backend/main.go index d7114f30..031c839a 100644 --- a/main.go +++ b/backend/main.go @@ -4,7 +4,7 @@ // Package main 是 Wavelet 平台的程序入口 package main -import "github.com/Rain-kl/Wavelet/cmd" +import "github.com/Rain-kl/Wavelet/backend/cmd" // @title Wavelet API // @version 1.0.0 diff --git a/pkg/batchwriter/config.go b/backend/pkg/batchwriter/config.go similarity index 100% rename from pkg/batchwriter/config.go rename to backend/pkg/batchwriter/config.go diff --git a/pkg/batchwriter/errs.go b/backend/pkg/batchwriter/errs.go similarity index 100% rename from pkg/batchwriter/errs.go rename to backend/pkg/batchwriter/errs.go diff --git a/pkg/batchwriter/writer.go b/backend/pkg/batchwriter/writer.go similarity index 100% rename from pkg/batchwriter/writer.go rename to backend/pkg/batchwriter/writer.go diff --git a/pkg/batchwriter/writer_test.go b/backend/pkg/batchwriter/writer_test.go similarity index 95% rename from pkg/batchwriter/writer_test.go rename to backend/pkg/batchwriter/writer_test.go index 8ad68bb4..8a2d42f0 100644 --- a/pkg/batchwriter/writer_test.go +++ b/backend/pkg/batchwriter/writer_test.go @@ -213,11 +213,16 @@ func TestWriter_DropWhenFull(t *testing.T) { cfg := Config{ QueueSize: 2, - MaxBatchSize: 10, + MaxBatchSize: 1, FlushInterval: time.Hour, } + entered := make(chan struct{}) w, err := New(cfg, func(_ context.Context, _ []testEvent) error { + select { + case entered <- struct{}{}: + default: + } <-blockCh return nil }, WithDropHandler(func(_ testEvent) { @@ -231,12 +236,15 @@ func TestWriter_DropWhenFull(t *testing.T) { _ = w.Stop(context.Background()) }() - time.Sleep(10 * time.Millisecond) - + // 1. 推入 1 个 item 触发 flush 并阻塞在 blockCh w.ch <- testEvent{ID: 1} - w.ch <- testEvent{ID: 2} + <-entered - assert.False(t, w.TryEnqueue(testEvent{ID: 3})) + // 2. 此时 worker 阻塞,填满 channel + w.ch <- testEvent{ID: 2} + w.ch <- testEvent{ID: 3} + + assert.False(t, w.TryEnqueue(testEvent{ID: 4})) assert.Equal(t, int64(1), dropped.Load()) assert.Equal(t, int64(1), w.Stats().Drops) } diff --git a/pkg/buildinfo/buildinfo.go b/backend/pkg/buildinfo/buildinfo.go similarity index 100% rename from pkg/buildinfo/buildinfo.go rename to backend/pkg/buildinfo/buildinfo.go diff --git a/pkg/cache/disk/cache.go b/backend/pkg/cache/disk/cache.go similarity index 100% rename from pkg/cache/disk/cache.go rename to backend/pkg/cache/disk/cache.go diff --git a/pkg/cache/disk/cache_test.go b/backend/pkg/cache/disk/cache_test.go similarity index 100% rename from pkg/cache/disk/cache_test.go rename to backend/pkg/cache/disk/cache_test.go diff --git a/pkg/cache/ram/cache.go b/backend/pkg/cache/ram/cache.go similarity index 100% rename from pkg/cache/ram/cache.go rename to backend/pkg/cache/ram/cache.go diff --git a/pkg/cache/ram/cache_test.go b/backend/pkg/cache/ram/cache_test.go similarity index 100% rename from pkg/cache/ram/cache_test.go rename to backend/pkg/cache/ram/cache_test.go diff --git a/pkg/cache/ram/manager.go b/backend/pkg/cache/ram/manager.go similarity index 100% rename from pkg/cache/ram/manager.go rename to backend/pkg/cache/ram/manager.go diff --git a/pkg/config/config.go b/backend/pkg/config/config.go similarity index 100% rename from pkg/config/config.go rename to backend/pkg/config/config.go diff --git a/pkg/config/config_test.go b/backend/pkg/config/config_test.go similarity index 100% rename from pkg/config/config_test.go rename to backend/pkg/config/config_test.go diff --git a/pkg/config/model.go b/backend/pkg/config/model.go similarity index 100% rename from pkg/config/model.go rename to backend/pkg/config/model.go diff --git a/pkg/httppool/httppool.go b/backend/pkg/httppool/httppool.go similarity index 100% rename from pkg/httppool/httppool.go rename to backend/pkg/httppool/httppool.go diff --git a/pkg/httppool/httppool_test.go b/backend/pkg/httppool/httppool_test.go similarity index 100% rename from pkg/httppool/httppool_test.go rename to backend/pkg/httppool/httppool_test.go diff --git a/pkg/idgen/snowflake.go b/backend/pkg/idgen/snowflake.go similarity index 96% rename from pkg/idgen/snowflake.go rename to backend/pkg/idgen/snowflake.go index aec36f8c..4132f6d3 100644 --- a/pkg/idgen/snowflake.go +++ b/backend/pkg/idgen/snowflake.go @@ -9,7 +9,7 @@ import ( "fmt" "log" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" "github.com/bwmarrin/snowflake" ) diff --git a/pkg/idgen/snowflake_test.go b/backend/pkg/idgen/snowflake_test.go similarity index 100% rename from pkg/idgen/snowflake_test.go rename to backend/pkg/idgen/snowflake_test.go diff --git a/pkg/logger/errs.go b/backend/pkg/logger/errs.go similarity index 100% rename from pkg/logger/errs.go rename to backend/pkg/logger/errs.go diff --git a/pkg/logger/logger.go b/backend/pkg/logger/logger.go similarity index 100% rename from pkg/logger/logger.go rename to backend/pkg/logger/logger.go diff --git a/pkg/logger/ringbuffer.go b/backend/pkg/logger/ringbuffer.go similarity index 100% rename from pkg/logger/ringbuffer.go rename to backend/pkg/logger/ringbuffer.go diff --git a/pkg/logger/ringbuffer_test.go b/backend/pkg/logger/ringbuffer_test.go similarity index 100% rename from pkg/logger/ringbuffer_test.go rename to backend/pkg/logger/ringbuffer_test.go diff --git a/pkg/logger/utils.go b/backend/pkg/logger/utils.go similarity index 100% rename from pkg/logger/utils.go rename to backend/pkg/logger/utils.go diff --git a/pkg/mail/errs.go b/backend/pkg/mail/errs.go similarity index 100% rename from pkg/mail/errs.go rename to backend/pkg/mail/errs.go diff --git a/pkg/mail/mail.go b/backend/pkg/mail/mail.go similarity index 100% rename from pkg/mail/mail.go rename to backend/pkg/mail/mail.go diff --git a/pkg/mail/mail_test.go b/backend/pkg/mail/mail_test.go similarity index 100% rename from pkg/mail/mail_test.go rename to backend/pkg/mail/mail_test.go diff --git a/pkg/response/abort.go b/backend/pkg/response/abort.go similarity index 100% rename from pkg/response/abort.go rename to backend/pkg/response/abort.go diff --git a/pkg/response/middleware.go b/backend/pkg/response/middleware.go similarity index 100% rename from pkg/response/middleware.go rename to backend/pkg/response/middleware.go diff --git a/pkg/response/middleware_test.go b/backend/pkg/response/middleware_test.go similarity index 100% rename from pkg/response/middleware_test.go rename to backend/pkg/response/middleware_test.go diff --git a/pkg/response/response.go b/backend/pkg/response/response.go similarity index 100% rename from pkg/response/response.go rename to backend/pkg/response/response.go diff --git a/pkg/testhelper/cleanup.go b/backend/pkg/testhelper/cleanup.go similarity index 100% rename from pkg/testhelper/cleanup.go rename to backend/pkg/testhelper/cleanup.go diff --git a/pkg/testhelper/gin.go b/backend/pkg/testhelper/gin.go similarity index 90% rename from pkg/testhelper/gin.go rename to backend/pkg/testhelper/gin.go index b743fcc5..c9e0c640 100644 --- a/pkg/testhelper/gin.go +++ b/backend/pkg/testhelper/gin.go @@ -4,7 +4,7 @@ package testhelper import ( - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/response" "github.com/gin-gonic/gin" ) diff --git a/pkg/testhelper/test_helper.go b/backend/pkg/testhelper/test_helper.go similarity index 99% rename from pkg/testhelper/test_helper.go rename to backend/pkg/testhelper/test_helper.go index 74ca3ac6..84df3606 100644 --- a/pkg/testhelper/test_helper.go +++ b/backend/pkg/testhelper/test_helper.go @@ -10,8 +10,8 @@ import ( "testing" "time" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/alicebob/miniredis/v2" "github.com/glebarez/sqlite" "github.com/redis/go-redis/v9" diff --git a/pkg/trace/propagator.go b/backend/pkg/trace/propagator.go similarity index 100% rename from pkg/trace/propagator.go rename to backend/pkg/trace/propagator.go diff --git a/pkg/trace/sampler.go b/backend/pkg/trace/sampler.go similarity index 100% rename from pkg/trace/sampler.go rename to backend/pkg/trace/sampler.go diff --git a/pkg/trace/trace.go b/backend/pkg/trace/trace.go similarity index 100% rename from pkg/trace/trace.go rename to backend/pkg/trace/trace.go diff --git a/pkg/trace/trace_provider.go b/backend/pkg/trace/trace_provider.go similarity index 100% rename from pkg/trace/trace_provider.go rename to backend/pkg/trace/trace_provider.go diff --git a/pkg/util/client_errs.go b/backend/pkg/util/client_errs.go similarity index 100% rename from pkg/util/client_errs.go rename to backend/pkg/util/client_errs.go diff --git a/pkg/util/crypto.go b/backend/pkg/util/crypto.go similarity index 100% rename from pkg/util/crypto.go rename to backend/pkg/util/crypto.go diff --git a/pkg/util/custom_types.go b/backend/pkg/util/custom_types.go similarity index 100% rename from pkg/util/custom_types.go rename to backend/pkg/util/custom_types.go diff --git a/pkg/util/gin_context.go b/backend/pkg/util/gin_context.go similarity index 99% rename from pkg/util/gin_context.go rename to backend/pkg/util/gin_context.go index 602501b1..0b31aafc 100644 --- a/pkg/util/gin_context.go +++ b/backend/pkg/util/gin_context.go @@ -19,4 +19,4 @@ func GetFromContext[T any](c *gin.Context, key string) (T, bool) { // SetToContext sets a typed value into Gin context. func SetToContext[T any](c *gin.Context, key string, value T) { c.Set(key, value) -} \ No newline at end of file +} diff --git a/pkg/util/goroutine.go b/backend/pkg/util/goroutine.go similarity index 100% rename from pkg/util/goroutine.go rename to backend/pkg/util/goroutine.go diff --git a/pkg/util/goroutine_test.go b/backend/pkg/util/goroutine_test.go similarity index 100% rename from pkg/util/goroutine_test.go rename to backend/pkg/util/goroutine_test.go diff --git a/pkg/util/http_clients.go b/backend/pkg/util/http_clients.go similarity index 97% rename from pkg/util/http_clients.go rename to backend/pkg/util/http_clients.go index a370e405..e8846d93 100644 --- a/pkg/util/http_clients.go +++ b/backend/pkg/util/http_clients.go @@ -12,7 +12,7 @@ import ( "net/url" "time" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" ) // IsLocalhost 检查 URL 是否为 localhost diff --git a/pkg/util/like.go b/backend/pkg/util/like.go similarity index 100% rename from pkg/util/like.go rename to backend/pkg/util/like.go diff --git a/pkg/util/like_test.go b/backend/pkg/util/like_test.go similarity index 100% rename from pkg/util/like_test.go rename to backend/pkg/util/like_test.go diff --git a/pkg/util/password.go b/backend/pkg/util/password.go similarity index 100% rename from pkg/util/password.go rename to backend/pkg/util/password.go diff --git a/pkg/util/password_test.go b/backend/pkg/util/password_test.go similarity index 100% rename from pkg/util/password_test.go rename to backend/pkg/util/password_test.go diff --git a/pkg/util/strings.go b/backend/pkg/util/strings.go similarity index 100% rename from pkg/util/strings.go rename to backend/pkg/util/strings.go diff --git a/pkg/util/uuid.go b/backend/pkg/util/uuid.go similarity index 100% rename from pkg/util/uuid.go rename to backend/pkg/util/uuid.go diff --git a/plugins/domain/admin/errs.go b/backend/plugins/domain/admin/errs.go similarity index 100% rename from plugins/domain/admin/errs.go rename to backend/plugins/domain/admin/errs.go diff --git a/plugins/domain/admin/handlers_auth_source.go b/backend/plugins/domain/admin/handlers_auth_source.go similarity index 95% rename from plugins/domain/admin/handlers_auth_source.go rename to backend/plugins/domain/admin/handlers_auth_source.go index f0121862..6d21b671 100644 --- a/plugins/domain/admin/handlers_auth_source.go +++ b/backend/plugins/domain/admin/handlers_auth_source.go @@ -7,9 +7,9 @@ import ( "net/http" "strconv" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/admin/handlers_cache.go b/backend/plugins/domain/admin/handlers_cache.go similarity index 96% rename from plugins/domain/admin/handlers_cache.go rename to backend/plugins/domain/admin/handlers_cache.go index 5a1ef936..75441b2f 100644 --- a/plugins/domain/admin/handlers_cache.go +++ b/backend/plugins/domain/admin/handlers_cache.go @@ -10,8 +10,8 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/diskcache" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/diskcache" ) type updateCacheConfigRequest struct { diff --git a/plugins/domain/admin/handlers_config.go b/backend/plugins/domain/admin/handlers_config.go similarity index 97% rename from plugins/domain/admin/handlers_config.go rename to backend/plugins/domain/admin/handlers_config.go index 39cc32d2..6bc0858d 100644 --- a/plugins/domain/admin/handlers_config.go +++ b/backend/plugins/domain/admin/handlers_config.go @@ -13,13 +13,13 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" - mail "github.com/Rain-kl/Wavelet/pkg/mail" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/domain/cap" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + mail "github.com/Rain-kl/Wavelet/backend/pkg/mail" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/cap" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/plugins/domain/admin/handlers_db.go b/backend/plugins/domain/admin/handlers_db.go similarity index 99% rename from plugins/domain/admin/handlers_db.go rename to backend/plugins/domain/admin/handlers_db.go index 089c5f8e..cebbeb5d 100644 --- a/plugins/domain/admin/handlers_db.go +++ b/backend/plugins/domain/admin/handlers_db.go @@ -19,9 +19,9 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/response" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/admin/handlers_logs.go b/backend/plugins/domain/admin/handlers_logs.go similarity index 97% rename from plugins/domain/admin/handlers_logs.go rename to backend/plugins/domain/admin/handlers_logs.go index 68f63705..aedf8244 100644 --- a/plugins/domain/admin/handlers_logs.go +++ b/backend/plugins/domain/admin/handlers_logs.go @@ -15,14 +15,14 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" "github.com/gorilla/websocket" ) diff --git a/plugins/domain/admin/handlers_status.go b/backend/plugins/domain/admin/handlers_status.go similarity index 96% rename from plugins/domain/admin/handlers_status.go rename to backend/plugins/domain/admin/handlers_status.go index f3b459f6..b5f41fc7 100644 --- a/plugins/domain/admin/handlers_status.go +++ b/backend/plugins/domain/admin/handlers_status.go @@ -16,10 +16,10 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" ) var startTime = time.Now() diff --git a/plugins/domain/admin/handlers_tasks.go b/backend/plugins/domain/admin/handlers_tasks.go similarity index 98% rename from plugins/domain/admin/handlers_tasks.go rename to backend/plugins/domain/admin/handlers_tasks.go index 63373e10..db63f69b 100644 --- a/plugins/domain/admin/handlers_tasks.go +++ b/backend/plugins/domain/admin/handlers_tasks.go @@ -14,10 +14,10 @@ import ( "github.com/gin-gonic/gin" "github.com/robfig/cron/v3" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_cron" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_cron" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) // ListTaskTypes 获取支持的任务类型列表 diff --git a/plugins/domain/admin/handlers_templates.go b/backend/plugins/domain/admin/handlers_templates.go similarity index 99% rename from plugins/domain/admin/handlers_templates.go rename to backend/plugins/domain/admin/handlers_templates.go index a4d2c88a..bed6ce16 100644 --- a/plugins/domain/admin/handlers_templates.go +++ b/backend/plugins/domain/admin/handlers_templates.go @@ -11,7 +11,7 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/response" ) // CreateTemplateRequest 创建模板请求 diff --git a/plugins/domain/admin/handlers_updater.go b/backend/plugins/domain/admin/handlers_updater.go similarity index 99% rename from plugins/domain/admin/handlers_updater.go rename to backend/plugins/domain/admin/handlers_updater.go index e6aa5f27..27efd4b3 100644 --- a/plugins/domain/admin/handlers_updater.go +++ b/backend/plugins/domain/admin/handlers_updater.go @@ -24,10 +24,10 @@ import ( "github.com/gin-gonic/gin" "golang.org/x/mod/semver" - "github.com/Rain-kl/Wavelet/pkg/buildinfo" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/buildinfo" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) const ( diff --git a/plugins/domain/admin/handlers_user.go b/backend/plugins/domain/admin/handlers_user.go similarity index 97% rename from plugins/domain/admin/handlers_user.go rename to backend/plugins/domain/admin/handlers_user.go index b076f937..4bc2f677 100644 --- a/plugins/domain/admin/handlers_user.go +++ b/backend/plugins/domain/admin/handlers_user.go @@ -15,13 +15,13 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const minPasswordLength = 8 diff --git a/plugins/domain/admin/middlewares.go b/backend/plugins/domain/admin/middlewares.go similarity index 80% rename from plugins/domain/admin/middlewares.go rename to backend/plugins/domain/admin/middlewares.go index 2497920c..a1fc3939 100644 --- a/plugins/domain/admin/middlewares.go +++ b/backend/plugins/domain/admin/middlewares.go @@ -4,11 +4,11 @@ package admin import ( - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/trace" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/util" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/admin/migrations/00001_initial.sql b/backend/plugins/domain/admin/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/admin/migrations/00001_initial.sql rename to backend/plugins/domain/admin/migrations/00001_initial.sql diff --git a/plugins/domain/admin/models.go b/backend/plugins/domain/admin/models.go similarity index 100% rename from plugins/domain/admin/models.go rename to backend/plugins/domain/admin/models.go diff --git a/plugins/domain/admin/plugin.go b/backend/plugins/domain/admin/plugin.go similarity index 90% rename from plugins/domain/admin/plugin.go rename to backend/plugins/domain/admin/plugin.go index 3eb73d65..0daec1ae 100644 --- a/plugins/domain/admin/plugin.go +++ b/backend/plugins/domain/admin/plugin.go @@ -8,9 +8,9 @@ import ( "context" "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" "github.com/gin-gonic/gin" "github.com/hibiken/asynq" ) @@ -53,12 +53,16 @@ func (p *Plugin) Manifest() core.Manifest { // Apply registers admin routes, tasks, schedules, and settings into the Context. func (p *Plugin) Apply(ctx *core.Context) error { // 0. Resolve auth service for middleware (via IoC, not direct import) - var authSvc contracts.AuthService - if err := core.Using[contracts.AuthService](ctx, func(svc contracts.AuthService) { authSvc = svc }); err != nil { - return err + var loginMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + var adminMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + if authSvc, err := core.Inject[contracts.AuthService](ctx); err == nil && authSvc != nil { + if mw, ok := authSvc.RequireAuthMiddleware().(gin.HandlerFunc); ok { + loginMW = mw + } + if mw, ok := authSvc.RequireAdminMiddleware().(gin.HandlerFunc); ok { + adminMW = mw + } } - loginMW := authSvc.RequireAuthMiddleware().(gin.HandlerFunc) - adminMW := authSvc.RequireAdminMiddleware().(gin.HandlerFunc) // 0a. Register migrations ctx.Migrations().Register("admin", adminMigrations) diff --git a/plugins/domain/admin/plugin_test.go b/backend/plugins/domain/admin/plugin_test.go similarity index 89% rename from plugins/domain/admin/plugin_test.go rename to backend/plugins/domain/admin/plugin_test.go index 49d0cc51..729c03e9 100644 --- a/plugins/domain/admin/plugin_test.go +++ b/backend/plugins/domain/admin/plugin_test.go @@ -10,8 +10,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/plugins/domain/admin" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/admin" ) func TestAdminPluginUnit(t *testing.T) { diff --git a/plugins/domain/admin/repository.go b/backend/plugins/domain/admin/repository.go similarity index 98% rename from plugins/domain/admin/repository.go rename to backend/plugins/domain/admin/repository.go index 7652a0dd..87fab502 100644 --- a/plugins/domain/admin/repository.go +++ b/backend/plugins/domain/admin/repository.go @@ -16,11 +16,11 @@ import ( "github.com/shopspring/decimal" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/cache/ram" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/util" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/cache/ram" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/admin/restart_unix.go b/backend/plugins/domain/admin/restart_unix.go similarity index 96% rename from plugins/domain/admin/restart_unix.go rename to backend/plugins/domain/admin/restart_unix.go index fa272dca..6d9516fe 100644 --- a/plugins/domain/admin/restart_unix.go +++ b/backend/plugins/domain/admin/restart_unix.go @@ -12,7 +12,7 @@ import ( "path/filepath" "syscall" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" ) const installedBinaryMode = 0o755 diff --git a/plugins/domain/admin/restart_windows.go b/backend/plugins/domain/admin/restart_windows.go similarity index 100% rename from plugins/domain/admin/restart_windows.go rename to backend/plugins/domain/admin/restart_windows.go diff --git a/plugins/domain/admin/system_config_cache.go b/backend/plugins/domain/admin/system_config_cache.go similarity index 97% rename from plugins/domain/admin/system_config_cache.go rename to backend/plugins/domain/admin/system_config_cache.go index 6978095e..a26dddf7 100644 --- a/plugins/domain/admin/system_config_cache.go +++ b/backend/plugins/domain/admin/system_config_cache.go @@ -12,9 +12,9 @@ import ( "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/cache/ram" - "github.com/Rain-kl/Wavelet/pkg/util" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/pkg/cache/ram" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) const ( diff --git a/plugins/domain/admin/system_config_test.go b/backend/plugins/domain/admin/system_config_test.go similarity index 97% rename from plugins/domain/admin/system_config_test.go rename to backend/plugins/domain/admin/system_config_test.go index 95acb2a3..e074bf38 100644 --- a/plugins/domain/admin/system_config_test.go +++ b/backend/plugins/domain/admin/system_config_test.go @@ -14,8 +14,8 @@ import ( "github.com/redis/go-redis/v9/maintnotifications" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) func setupSystemConfigTest(t *testing.T) (*gorm.DB, func()) { diff --git a/plugins/domain/auth/audit.go b/backend/plugins/domain/auth/audit.go similarity index 90% rename from plugins/domain/auth/audit.go rename to backend/plugins/domain/auth/audit.go index 6e2958f2..138c26c5 100644 --- a/plugins/domain/auth/audit.go +++ b/backend/plugins/domain/auth/audit.go @@ -8,8 +8,8 @@ import ( "context" "encoding/json" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/auth/auth_source_resolver.go b/backend/plugins/domain/auth/auth_source_resolver.go similarity index 98% rename from plugins/domain/auth/auth_source_resolver.go rename to backend/plugins/domain/auth/auth_source_resolver.go index a7ce5c91..78c2f7ec 100644 --- a/plugins/domain/auth/auth_source_resolver.go +++ b/backend/plugins/domain/auth/auth_source_resolver.go @@ -10,8 +10,8 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/core/contracts" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/coreos/go-oidc/v3/oidc" "golang.org/x/oauth2" diff --git a/plugins/domain/auth/cache.go b/backend/plugins/domain/auth/cache.go similarity index 96% rename from plugins/domain/auth/cache.go rename to backend/plugins/domain/auth/cache.go index 76db1efe..68fd26e7 100644 --- a/plugins/domain/auth/cache.go +++ b/backend/plugins/domain/auth/cache.go @@ -10,10 +10,10 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/cache/ram" - "github.com/Rain-kl/Wavelet/pkg/util" - db "github.com/Rain-kl/Wavelet/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/cache/ram" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) const ( diff --git a/plugins/domain/auth/cache_test.go b/backend/plugins/domain/auth/cache_test.go similarity index 94% rename from plugins/domain/auth/cache_test.go rename to backend/plugins/domain/auth/cache_test.go index 38472e9a..032432e5 100644 --- a/plugins/domain/auth/cache_test.go +++ b/backend/plugins/domain/auth/cache_test.go @@ -11,9 +11,9 @@ import ( "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - db "github.com/Rain-kl/Wavelet/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) func setupOauthCacheTest(t *testing.T) (*miniredis.Miniredis, func()) { diff --git a/plugins/domain/auth/constants.go b/backend/plugins/domain/auth/constants.go similarity index 100% rename from plugins/domain/auth/constants.go rename to backend/plugins/domain/auth/constants.go diff --git a/plugins/domain/auth/errs.go b/backend/plugins/domain/auth/errs.go similarity index 100% rename from plugins/domain/auth/errs.go rename to backend/plugins/domain/auth/errs.go diff --git a/plugins/domain/auth/handlers.go b/backend/plugins/domain/auth/handlers.go similarity index 97% rename from plugins/domain/auth/handlers.go rename to backend/plugins/domain/auth/handlers.go index e8d8ed4c..3ec6a290 100644 --- a/plugins/domain/auth/handlers.go +++ b/backend/plugins/domain/auth/handlers.go @@ -13,14 +13,14 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/coreos/go-oidc/v3/oidc" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" diff --git a/plugins/domain/auth/middleware.go b/backend/plugins/domain/auth/middleware.go similarity index 94% rename from plugins/domain/auth/middleware.go rename to backend/plugins/domain/auth/middleware.go index 8b337ab7..d1e932f4 100644 --- a/plugins/domain/auth/middleware.go +++ b/backend/plugins/domain/auth/middleware.go @@ -10,11 +10,11 @@ import ( "encoding/hex" "errors" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/trace" - "github.com/Rain-kl/Wavelet/pkg/util" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" ) @@ -173,4 +173,4 @@ func DisallowTokenAuth() gin.HandlerFunc { } c.Next() } -} \ No newline at end of file +} diff --git a/plugins/domain/auth/migrations/00001_initial.sql b/backend/plugins/domain/auth/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/auth/migrations/00001_initial.sql rename to backend/plugins/domain/auth/migrations/00001_initial.sql diff --git a/plugins/domain/auth/models.go b/backend/plugins/domain/auth/models.go similarity index 99% rename from plugins/domain/auth/models.go rename to backend/plugins/domain/auth/models.go index 10cb2e54..c5374ded 100644 --- a/plugins/domain/auth/models.go +++ b/backend/plugins/domain/auth/models.go @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/contracts" ) var authSourceNamePattern = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9_-]{0,79}$`) diff --git a/plugins/domain/auth/plugin.go b/backend/plugins/domain/auth/plugin.go similarity index 95% rename from plugins/domain/auth/plugin.go rename to backend/plugins/domain/auth/plugin.go index 0f55f07f..cec331e5 100644 --- a/plugins/domain/auth/plugin.go +++ b/backend/plugins/domain/auth/plugin.go @@ -7,9 +7,9 @@ package auth import ( "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) //go:embed migrations/*.sql diff --git a/plugins/domain/auth/plugin_test.go b/backend/plugins/domain/auth/plugin_test.go similarity index 94% rename from plugins/domain/auth/plugin_test.go rename to backend/plugins/domain/auth/plugin_test.go index 228043ae..acf4d0e8 100644 --- a/plugins/domain/auth/plugin_test.go +++ b/backend/plugins/domain/auth/plugin_test.go @@ -16,10 +16,10 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) type testUser struct { diff --git a/plugins/domain/auth/provider_cache.go b/backend/plugins/domain/auth/provider_cache.go similarity index 100% rename from plugins/domain/auth/provider_cache.go rename to backend/plugins/domain/auth/provider_cache.go diff --git a/plugins/domain/auth/repository.go b/backend/plugins/domain/auth/repository.go similarity index 97% rename from plugins/domain/auth/repository.go rename to backend/plugins/domain/auth/repository.go index df8ebafd..f230bf74 100644 --- a/plugins/domain/auth/repository.go +++ b/backend/plugins/domain/auth/repository.go @@ -7,7 +7,7 @@ package auth import ( "context" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // GetAuthSourceByID 根据 ID 获取认证源 diff --git a/plugins/domain/auth/service.go b/backend/plugins/domain/auth/service.go similarity index 95% rename from plugins/domain/auth/service.go rename to backend/plugins/domain/auth/service.go index a39826ea..7a0181f6 100644 --- a/plugins/domain/auth/service.go +++ b/backend/plugins/domain/auth/service.go @@ -8,9 +8,9 @@ import ( "errors" "sync" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/util" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/auth/session.go b/backend/plugins/domain/auth/session.go similarity index 95% rename from plugins/domain/auth/session.go rename to backend/plugins/domain/auth/session.go index c1a18051..ec7f49b4 100644 --- a/plugins/domain/auth/session.go +++ b/backend/plugins/domain/auth/session.go @@ -11,9 +11,9 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/config" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" "github.com/google/uuid" diff --git a/plugins/domain/cap/errs.go b/backend/plugins/domain/cap/errs.go similarity index 100% rename from plugins/domain/cap/errs.go rename to backend/plugins/domain/cap/errs.go diff --git a/plugins/domain/cap/handlers.go b/backend/plugins/domain/cap/handlers.go similarity index 94% rename from plugins/domain/cap/handlers.go rename to backend/plugins/domain/cap/handlers.go index 12f921e9..5b3df2b2 100644 --- a/plugins/domain/cap/handlers.go +++ b/backend/plugins/domain/cap/handlers.go @@ -6,9 +6,9 @@ package cap import ( "net/http" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/domain/cap/pow" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/cap/pow" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/cap/manager.go b/backend/plugins/domain/cap/manager.go similarity index 96% rename from plugins/domain/cap/manager.go rename to backend/plugins/domain/cap/manager.go index fe0ff173..831944e2 100644 --- a/plugins/domain/cap/manager.go +++ b/backend/plugins/domain/cap/manager.go @@ -13,9 +13,9 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/pkg/config" - db "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/cap/pow" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/cap/pow" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) const ( diff --git a/plugins/domain/cap/middleware.go b/backend/plugins/domain/cap/middleware.go similarity index 93% rename from plugins/domain/cap/middleware.go rename to backend/plugins/domain/cap/middleware.go index b8ca625a..59882317 100644 --- a/plugins/domain/cap/middleware.go +++ b/backend/plugins/domain/cap/middleware.go @@ -6,7 +6,7 @@ package cap import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/response" ) // VerifyMiddleware returns a Gin middleware that checks and consumes the X-Cap-Token header. diff --git a/plugins/domain/cap/plugin.go b/backend/plugins/domain/cap/plugin.go similarity index 94% rename from plugins/domain/cap/plugin.go rename to backend/plugins/domain/cap/plugin.go index dc733e90..7cca96c2 100644 --- a/plugins/domain/cap/plugin.go +++ b/backend/plugins/domain/cap/plugin.go @@ -5,8 +5,8 @@ package cap import ( - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" ) // Plugin implements core.Plugin to provide CAPTCHA generation, validation, and route protection. diff --git a/plugins/domain/cap/pow/cap.go b/backend/plugins/domain/cap/pow/cap.go similarity index 100% rename from plugins/domain/cap/pow/cap.go rename to backend/plugins/domain/cap/pow/cap.go diff --git a/plugins/domain/cap/pow/errs.go b/backend/plugins/domain/cap/pow/errs.go similarity index 100% rename from plugins/domain/cap/pow/errs.go rename to backend/plugins/domain/cap/pow/errs.go diff --git a/plugins/domain/cap/pow/pow_test.go b/backend/plugins/domain/cap/pow/pow_test.go similarity index 100% rename from plugins/domain/cap/pow/pow_test.go rename to backend/plugins/domain/cap/pow/pow_test.go diff --git a/plugins/domain/cap/pow/prng.go b/backend/plugins/domain/cap/pow/prng.go similarity index 100% rename from plugins/domain/cap/pow/prng.go rename to backend/plugins/domain/cap/pow/prng.go diff --git a/plugins/domain/cap/pow/store.go b/backend/plugins/domain/cap/pow/store.go similarity index 100% rename from plugins/domain/cap/pow/store.go rename to backend/plugins/domain/cap/pow/store.go diff --git a/plugins/domain/cap/runtime_settings.go b/backend/plugins/domain/cap/runtime_settings.go similarity index 97% rename from plugins/domain/cap/runtime_settings.go rename to backend/plugins/domain/cap/runtime_settings.go index 869e52bb..0afafaaf 100644 --- a/plugins/domain/cap/runtime_settings.go +++ b/backend/plugins/domain/cap/runtime_settings.go @@ -14,9 +14,9 @@ import ( "golang.org/x/sync/singleflight" - "github.com/Rain-kl/Wavelet/pkg/util" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/domain_test.go b/backend/plugins/domain/domain_test.go similarity index 95% rename from plugins/domain/domain_test.go rename to backend/plugins/domain/domain_test.go index 3473a50a..97e8ed59 100644 --- a/plugins/domain/domain_test.go +++ b/backend/plugins/domain/domain_test.go @@ -16,17 +16,17 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/domain/admin" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" - "github.com/Rain-kl/Wavelet/plugins/domain/user" - "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/infra/logger" - "github.com/Rain-kl/Wavelet/plugins/infra/storage" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/admin" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/user" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage" ) func setupTestDB(t *testing.T) *gorm.DB { diff --git a/plugins/domain/message_gateway/admin_handlers.go b/backend/plugins/domain/message_gateway/admin_handlers.go similarity index 99% rename from plugins/domain/message_gateway/admin_handlers.go rename to backend/plugins/domain/message_gateway/admin_handlers.go index f8d9b286..b386771a 100644 --- a/plugins/domain/message_gateway/admin_handlers.go +++ b/backend/plugins/domain/message_gateway/admin_handlers.go @@ -7,7 +7,7 @@ import ( "net/http" "strconv" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/response" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/message_gateway/admin_logics.go b/backend/plugins/domain/message_gateway/admin_logics.go similarity index 100% rename from plugins/domain/message_gateway/admin_logics.go rename to backend/plugins/domain/message_gateway/admin_logics.go diff --git a/plugins/domain/message_gateway/channel.go b/backend/plugins/domain/message_gateway/channel.go similarity index 100% rename from plugins/domain/message_gateway/channel.go rename to backend/plugins/domain/message_gateway/channel.go diff --git a/plugins/domain/message_gateway/channels/qq/adapter.go b/backend/plugins/domain/message_gateway/channels/qq/adapter.go similarity index 97% rename from plugins/domain/message_gateway/channels/qq/adapter.go rename to backend/plugins/domain/message_gateway/channels/qq/adapter.go index f84947b8..0f7cc5bf 100644 --- a/plugins/domain/message_gateway/channels/qq/adapter.go +++ b/backend/plugins/domain/message_gateway/channels/qq/adapter.go @@ -11,8 +11,8 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" "github.com/tencent-connect/botgo" "github.com/tencent-connect/botgo/dto" "github.com/tencent-connect/botgo/event" diff --git a/plugins/domain/message_gateway/channels/qq/adapter_test.go b/backend/plugins/domain/message_gateway/channels/qq/adapter_test.go similarity index 93% rename from plugins/domain/message_gateway/channels/qq/adapter_test.go rename to backend/plugins/domain/message_gateway/channels/qq/adapter_test.go index 68bbecd9..76a05d79 100644 --- a/plugins/domain/message_gateway/channels/qq/adapter_test.go +++ b/backend/plugins/domain/message_gateway/channels/qq/adapter_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" ) func TestHandleEvent_DropsNonC2C(t *testing.T) { diff --git a/plugins/domain/message_gateway/channels/telegram/adapter.go b/backend/plugins/domain/message_gateway/channels/telegram/adapter.go similarity index 98% rename from plugins/domain/message_gateway/channels/telegram/adapter.go rename to backend/plugins/domain/message_gateway/channels/telegram/adapter.go index 3d2359b2..fee67dca 100644 --- a/plugins/domain/message_gateway/channels/telegram/adapter.go +++ b/backend/plugins/domain/message_gateway/channels/telegram/adapter.go @@ -12,7 +12,7 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" tele "gopkg.in/telebot.v4" ) diff --git a/plugins/domain/message_gateway/channels/telegram/adapter_test.go b/backend/plugins/domain/message_gateway/channels/telegram/adapter_test.go similarity index 94% rename from plugins/domain/message_gateway/channels/telegram/adapter_test.go rename to backend/plugins/domain/message_gateway/channels/telegram/adapter_test.go index f0d67039..f0407663 100644 --- a/plugins/domain/message_gateway/channels/telegram/adapter_test.go +++ b/backend/plugins/domain/message_gateway/channels/telegram/adapter_test.go @@ -7,7 +7,7 @@ import ( "context" "testing" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" tele "gopkg.in/telebot.v4" ) diff --git a/plugins/domain/message_gateway/custom_events_admin_login.go b/backend/plugins/domain/message_gateway/custom_events_admin_login.go similarity index 95% rename from plugins/domain/message_gateway/custom_events_admin_login.go rename to backend/plugins/domain/message_gateway/custom_events_admin_login.go index 4e09c1f8..99077bea 100644 --- a/plugins/domain/message_gateway/custom_events_admin_login.go +++ b/backend/plugins/domain/message_gateway/custom_events_admin_login.go @@ -7,7 +7,7 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/contracts" ) // AdminLogin is the metadata definition for the admin login event. diff --git a/plugins/domain/message_gateway/errs.go b/backend/plugins/domain/message_gateway/errs.go similarity index 100% rename from plugins/domain/message_gateway/errs.go rename to backend/plugins/domain/message_gateway/errs.go diff --git a/plugins/domain/message_gateway/gateway_types.go b/backend/plugins/domain/message_gateway/gateway_types.go similarity index 100% rename from plugins/domain/message_gateway/gateway_types.go rename to backend/plugins/domain/message_gateway/gateway_types.go diff --git a/plugins/domain/message_gateway/handlers.go b/backend/plugins/domain/message_gateway/handlers.go similarity index 96% rename from plugins/domain/message_gateway/handlers.go rename to backend/plugins/domain/message_gateway/handlers.go index ae33cae2..dbd6a3ba 100644 --- a/plugins/domain/message_gateway/handlers.go +++ b/backend/plugins/domain/message_gateway/handlers.go @@ -8,9 +8,9 @@ import ( "net/http" "strconv" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/message_gateway/logics.go b/backend/plugins/domain/message_gateway/logics.go similarity index 100% rename from plugins/domain/message_gateway/logics.go rename to backend/plugins/domain/message_gateway/logics.go diff --git a/plugins/domain/message_gateway/message_gateway_test.go b/backend/plugins/domain/message_gateway/message_gateway_test.go similarity index 85% rename from plugins/domain/message_gateway/message_gateway_test.go rename to backend/plugins/domain/message_gateway/message_gateway_test.go index 88b8d0d9..c0dbf8c4 100644 --- a/plugins/domain/message_gateway/message_gateway_test.go +++ b/backend/plugins/domain/message_gateway/message_gateway_test.go @@ -8,8 +8,8 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" ) func TestUpsertPairingCode_ReusesUnexpired(t *testing.T) { diff --git a/plugins/domain/message_gateway/migrations/00001_initial.sql b/backend/plugins/domain/message_gateway/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/message_gateway/migrations/00001_initial.sql rename to backend/plugins/domain/message_gateway/migrations/00001_initial.sql diff --git a/plugins/domain/message_gateway/models.go b/backend/plugins/domain/message_gateway/models.go similarity index 100% rename from plugins/domain/message_gateway/models.go rename to backend/plugins/domain/message_gateway/models.go diff --git a/plugins/domain/message_gateway/pairing.go b/backend/plugins/domain/message_gateway/pairing.go similarity index 100% rename from plugins/domain/message_gateway/pairing.go rename to backend/plugins/domain/message_gateway/pairing.go diff --git a/plugins/domain/message_gateway/pairing_test.go b/backend/plugins/domain/message_gateway/pairing_test.go similarity index 100% rename from plugins/domain/message_gateway/pairing_test.go rename to backend/plugins/domain/message_gateway/pairing_test.go diff --git a/plugins/domain/message_gateway/plugin.go b/backend/plugins/domain/message_gateway/plugin.go similarity index 91% rename from plugins/domain/message_gateway/plugin.go rename to backend/plugins/domain/message_gateway/plugin.go index 8f4c5a95..978f5f49 100644 --- a/plugins/domain/message_gateway/plugin.go +++ b/backend/plugins/domain/message_gateway/plugin.go @@ -8,9 +8,9 @@ import ( "context" "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" "github.com/gin-gonic/gin" "github.com/hibiken/asynq" ) @@ -72,12 +72,16 @@ type PushNotificationEvent struct { // Apply registers message_gateway migrations, routes, tasks, schedules, events, and settings into the Context. func (p *Plugin) Apply(ctx *core.Context) error { // 0. Resolve auth service for middleware (via IoC, not direct import) - var authSvc contracts.AuthService - if err := core.Using[contracts.AuthService](ctx, func(svc contracts.AuthService) { authSvc = svc }); err != nil { - return err + var loginMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + var adminMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + if authSvc, err := core.Inject[contracts.AuthService](ctx); err == nil && authSvc != nil { + if mw, ok := authSvc.RequireAuthMiddleware().(gin.HandlerFunc); ok { + loginMW = mw + } + if mw, ok := authSvc.RequireAdminMiddleware().(gin.HandlerFunc); ok { + adminMW = mw + } } - loginMW := authSvc.RequireAuthMiddleware().(gin.HandlerFunc) - adminMW := authSvc.RequireAdminMiddleware().(gin.HandlerFunc) // 1. Register migrations ctx.Migrations().Register("message_gateway", mgMigrations) diff --git a/plugins/domain/message_gateway/plugin_test.go b/backend/plugins/domain/message_gateway/plugin_test.go similarity index 90% rename from plugins/domain/message_gateway/plugin_test.go rename to backend/plugins/domain/message_gateway/plugin_test.go index 0f098197..c3154887 100644 --- a/plugins/domain/message_gateway/plugin_test.go +++ b/backend/plugins/domain/message_gateway/plugin_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" ) func TestMessageGatewayPluginUnit(t *testing.T) { diff --git a/plugins/domain/message_gateway/push/custom.go b/backend/plugins/domain/message_gateway/push/custom.go similarity index 98% rename from plugins/domain/message_gateway/push/custom.go rename to backend/plugins/domain/message_gateway/push/custom.go index c8326792..a033a707 100644 --- a/plugins/domain/message_gateway/push/custom.go +++ b/backend/plugins/domain/message_gateway/push/custom.go @@ -13,7 +13,7 @@ import ( "net/http" "strings" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" ) func init() { diff --git a/plugins/domain/message_gateway/push/custom_test.go b/backend/plugins/domain/message_gateway/push/custom_test.go similarity index 100% rename from plugins/domain/message_gateway/push/custom_test.go rename to backend/plugins/domain/message_gateway/push/custom_test.go diff --git a/plugins/domain/message_gateway/push/email.go b/backend/plugins/domain/message_gateway/push/email.go similarity index 98% rename from plugins/domain/message_gateway/push/email.go rename to backend/plugins/domain/message_gateway/push/email.go index d2eb047f..5123daf7 100644 --- a/plugins/domain/message_gateway/push/email.go +++ b/backend/plugins/domain/message_gateway/push/email.go @@ -11,7 +11,7 @@ import ( "net/smtp" "strings" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) func init() { diff --git a/plugins/domain/message_gateway/push/email_test.go b/backend/plugins/domain/message_gateway/push/email_test.go similarity index 100% rename from plugins/domain/message_gateway/push/email_test.go rename to backend/plugins/domain/message_gateway/push/email_test.go diff --git a/plugins/domain/message_gateway/push/lark.go b/backend/plugins/domain/message_gateway/push/lark.go similarity index 99% rename from plugins/domain/message_gateway/push/lark.go rename to backend/plugins/domain/message_gateway/push/lark.go index e97a8b1a..14e287f7 100644 --- a/plugins/domain/message_gateway/push/lark.go +++ b/backend/plugins/domain/message_gateway/push/lark.go @@ -17,7 +17,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" ) func init() { diff --git a/plugins/domain/message_gateway/push/push.go b/backend/plugins/domain/message_gateway/push/push.go similarity index 100% rename from plugins/domain/message_gateway/push/push.go rename to backend/plugins/domain/message_gateway/push/push.go diff --git a/plugins/domain/message_gateway/push/telegram.go b/backend/plugins/domain/message_gateway/push/telegram.go similarity index 98% rename from plugins/domain/message_gateway/push/telegram.go rename to backend/plugins/domain/message_gateway/push/telegram.go index 54f49e76..0a1bc27b 100644 --- a/plugins/domain/message_gateway/push/telegram.go +++ b/backend/plugins/domain/message_gateway/push/telegram.go @@ -12,7 +12,7 @@ import ( "net/http" "strings" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" ) func init() { diff --git a/plugins/domain/message_gateway/push/telegram_test.go b/backend/plugins/domain/message_gateway/push/telegram_test.go similarity index 100% rename from plugins/domain/message_gateway/push/telegram_test.go rename to backend/plugins/domain/message_gateway/push/telegram_test.go diff --git a/plugins/domain/message_gateway/push/template.go b/backend/plugins/domain/message_gateway/push/template.go similarity index 100% rename from plugins/domain/message_gateway/push/template.go rename to backend/plugins/domain/message_gateway/push/template.go diff --git a/plugins/domain/message_gateway/push/template_test.go b/backend/plugins/domain/message_gateway/push/template_test.go similarity index 100% rename from plugins/domain/message_gateway/push/template_test.go rename to backend/plugins/domain/message_gateway/push/template_test.go diff --git a/plugins/domain/message_gateway/push_channels.go b/backend/plugins/domain/message_gateway/push_channels.go similarity index 98% rename from plugins/domain/message_gateway/push_channels.go rename to backend/plugins/domain/message_gateway/push_channels.go index 0509ec3b..073f6fea 100644 --- a/plugins/domain/message_gateway/push_channels.go +++ b/backend/plugins/domain/message_gateway/push_channels.go @@ -11,8 +11,8 @@ import ( "strings" "sync" - "github.com/Rain-kl/Wavelet/pkg/response" - pkgpush "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway/push" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + pkgpush "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway/push" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/plugins/domain/message_gateway/push_constants.go b/backend/plugins/domain/message_gateway/push_constants.go similarity index 100% rename from plugins/domain/message_gateway/push_constants.go rename to backend/plugins/domain/message_gateway/push_constants.go diff --git a/plugins/domain/message_gateway/push_events.go b/backend/plugins/domain/message_gateway/push_events.go similarity index 97% rename from plugins/domain/message_gateway/push_events.go rename to backend/plugins/domain/message_gateway/push_events.go index 6ddec299..8134542c 100644 --- a/plugins/domain/message_gateway/push_events.go +++ b/backend/plugins/domain/message_gateway/push_events.go @@ -9,11 +9,11 @@ import ( "errors" "sync" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" - pkgpush "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway/push" + pkgpush "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway/push" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/util" "gorm.io/gorm" ) diff --git a/plugins/domain/message_gateway/push_handlers.go b/backend/plugins/domain/message_gateway/push_handlers.go similarity index 97% rename from plugins/domain/message_gateway/push_handlers.go rename to backend/plugins/domain/message_gateway/push_handlers.go index 5dd14831..020b44ef 100644 --- a/plugins/domain/message_gateway/push_handlers.go +++ b/backend/plugins/domain/message_gateway/push_handlers.go @@ -9,9 +9,9 @@ import ( "net/http" "strconv" - pkgpush "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway/push" + pkgpush "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway/push" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/response" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/plugins/domain/message_gateway/push_logics.go b/backend/plugins/domain/message_gateway/push_logics.go similarity index 98% rename from plugins/domain/message_gateway/push_logics.go rename to backend/plugins/domain/message_gateway/push_logics.go index f6ff7a26..235f0738 100644 --- a/plugins/domain/message_gateway/push_logics.go +++ b/backend/plugins/domain/message_gateway/push_logics.go @@ -11,10 +11,10 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/core/contracts" - pkgpush "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway/push" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + pkgpush "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway/push" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/message_gateway/push_task_listener.go b/backend/plugins/domain/message_gateway/push_task_listener.go similarity index 95% rename from plugins/domain/message_gateway/push_task_listener.go rename to backend/plugins/domain/message_gateway/push_task_listener.go index 79e94b76..4c56291a 100644 --- a/plugins/domain/message_gateway/push_task_listener.go +++ b/backend/plugins/domain/message_gateway/push_task_listener.go @@ -9,8 +9,8 @@ import ( "strconv" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) // RegisterTaskListeners subscribes push notification handlers to task completion events. diff --git a/plugins/domain/message_gateway/push_tasks.go b/backend/plugins/domain/message_gateway/push_tasks.go similarity index 96% rename from plugins/domain/message_gateway/push_tasks.go rename to backend/plugins/domain/message_gateway/push_tasks.go index 53981f7d..4dff4ad9 100644 --- a/plugins/domain/message_gateway/push_tasks.go +++ b/backend/plugins/domain/message_gateway/push_tasks.go @@ -9,8 +9,8 @@ import ( "errors" "fmt" - "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway/push" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway/push" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) const ( diff --git a/plugins/domain/message_gateway/registry.go b/backend/plugins/domain/message_gateway/registry.go similarity index 100% rename from plugins/domain/message_gateway/registry.go rename to backend/plugins/domain/message_gateway/registry.go diff --git a/plugins/domain/message_gateway/registry_test.go b/backend/plugins/domain/message_gateway/registry_test.go similarity index 100% rename from plugins/domain/message_gateway/registry_test.go rename to backend/plugins/domain/message_gateway/registry_test.go diff --git a/plugins/domain/message_gateway/repository.go b/backend/plugins/domain/message_gateway/repository.go similarity index 98% rename from plugins/domain/message_gateway/repository.go rename to backend/plugins/domain/message_gateway/repository.go index da143499..27fcb2c1 100644 --- a/plugins/domain/message_gateway/repository.go +++ b/backend/plugins/domain/message_gateway/repository.go @@ -10,9 +10,9 @@ import ( "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/idgen" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/message_gateway/runner.go b/backend/plugins/domain/message_gateway/runner.go similarity index 95% rename from plugins/domain/message_gateway/runner.go rename to backend/plugins/domain/message_gateway/runner.go index daa0593c..72d22767 100644 --- a/plugins/domain/message_gateway/runner.go +++ b/backend/plugins/domain/message_gateway/runner.go @@ -7,7 +7,7 @@ import ( "context" "sync" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" ) // Runner manages lifecycle for long-lived channel adapters (WebSocket, long-polling, etc.). diff --git a/plugins/domain/message_gateway/secret.go b/backend/plugins/domain/message_gateway/secret.go similarity index 94% rename from plugins/domain/message_gateway/secret.go rename to backend/plugins/domain/message_gateway/secret.go index 343f7404..49c45892 100644 --- a/plugins/domain/message_gateway/secret.go +++ b/backend/plugins/domain/message_gateway/secret.go @@ -8,8 +8,8 @@ import ( "encoding/hex" "encoding/json" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) // CredentialKey is AES-256 hex derived from the session secret. diff --git a/plugins/domain/risk_control/logics.go b/backend/plugins/domain/risk_control/logics.go similarity index 95% rename from plugins/domain/risk_control/logics.go rename to backend/plugins/domain/risk_control/logics.go index f65ecbbe..6b74bcae 100644 --- a/plugins/domain/risk_control/logics.go +++ b/backend/plugins/domain/risk_control/logics.go @@ -8,9 +8,9 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/pkg/batchwriter" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" + "github.com/Rain-kl/Wavelet/backend/pkg/batchwriter" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" ) var ( diff --git a/plugins/domain/risk_control/logstore/access_log.go b/backend/plugins/domain/risk_control/logstore/access_log.go similarity index 96% rename from plugins/domain/risk_control/logstore/access_log.go rename to backend/plugins/domain/risk_control/logstore/access_log.go index 5f91596f..47622eee 100644 --- a/plugins/domain/risk_control/logstore/access_log.go +++ b/backend/plugins/domain/risk_control/logstore/access_log.go @@ -9,8 +9,8 @@ import ( "fmt" "time" - "github.com/Rain-kl/Wavelet/pkg/util" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/risk_control/logstore/access_log_filter.go b/backend/plugins/domain/risk_control/logstore/access_log_filter.go similarity index 100% rename from plugins/domain/risk_control/logstore/access_log_filter.go rename to backend/plugins/domain/risk_control/logstore/access_log_filter.go diff --git a/plugins/domain/risk_control/logstore/access_log_stats.go b/backend/plugins/domain/risk_control/logstore/access_log_stats.go similarity index 98% rename from plugins/domain/risk_control/logstore/access_log_stats.go rename to backend/plugins/domain/risk_control/logstore/access_log_stats.go index 2a320867..b568ef84 100644 --- a/plugins/domain/risk_control/logstore/access_log_stats.go +++ b/backend/plugins/domain/risk_control/logstore/access_log_stats.go @@ -9,7 +9,7 @@ import ( "sort" "time" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const hoursInDay = 24 diff --git a/plugins/domain/risk_control/logstore/access_log_test.go b/backend/plugins/domain/risk_control/logstore/access_log_test.go similarity index 98% rename from plugins/domain/risk_control/logstore/access_log_test.go rename to backend/plugins/domain/risk_control/logstore/access_log_test.go index bc06db18..d52b07e3 100644 --- a/plugins/domain/risk_control/logstore/access_log_test.go +++ b/backend/plugins/domain/risk_control/logstore/access_log_test.go @@ -17,7 +17,7 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) func setupChGormDB(t *testing.T) *gorm.DB { diff --git a/plugins/domain/risk_control/logstore/access_log_writer.go b/backend/plugins/domain/risk_control/logstore/access_log_writer.go similarity index 93% rename from plugins/domain/risk_control/logstore/access_log_writer.go rename to backend/plugins/domain/risk_control/logstore/access_log_writer.go index 21c500cf..81fbc9c9 100644 --- a/plugins/domain/risk_control/logstore/access_log_writer.go +++ b/backend/plugins/domain/risk_control/logstore/access_log_writer.go @@ -7,7 +7,7 @@ import ( "context" "fmt" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // BatchInsert writes access logs to ClickHouse using the native batch API. diff --git a/plugins/domain/risk_control/logstore/browser.go b/backend/plugins/domain/risk_control/logstore/browser.go similarity index 100% rename from plugins/domain/risk_control/logstore/browser.go rename to backend/plugins/domain/risk_control/logstore/browser.go diff --git a/plugins/domain/risk_control/logstore/cleanup.go b/backend/plugins/domain/risk_control/logstore/cleanup.go similarity index 98% rename from plugins/domain/risk_control/logstore/cleanup.go rename to backend/plugins/domain/risk_control/logstore/cleanup.go index 3eeb6df8..ae989072 100644 --- a/plugins/domain/risk_control/logstore/cleanup.go +++ b/backend/plugins/domain/risk_control/logstore/cleanup.go @@ -10,7 +10,7 @@ import ( "strconv" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" ) const ( diff --git a/plugins/domain/risk_control/logstore/clickhouse.go b/backend/plugins/domain/risk_control/logstore/clickhouse.go similarity index 98% rename from plugins/domain/risk_control/logstore/clickhouse.go rename to backend/plugins/domain/risk_control/logstore/clickhouse.go index 51f0b415..4c8e7966 100644 --- a/plugins/domain/risk_control/logstore/clickhouse.go +++ b/backend/plugins/domain/risk_control/logstore/clickhouse.go @@ -9,7 +9,7 @@ import ( "time" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) type clickhouseUserAccessLogStore struct { diff --git a/plugins/domain/risk_control/logstore/gorm.go b/backend/plugins/domain/risk_control/logstore/gorm.go similarity index 99% rename from plugins/domain/risk_control/logstore/gorm.go rename to backend/plugins/domain/risk_control/logstore/gorm.go index 5dd0c7a2..8873566e 100644 --- a/plugins/domain/risk_control/logstore/gorm.go +++ b/backend/plugins/domain/risk_control/logstore/gorm.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" "gorm.io/gorm" ) diff --git a/plugins/domain/risk_control/logstore/gorm_test.go b/backend/plugins/domain/risk_control/logstore/gorm_test.go similarity index 100% rename from plugins/domain/risk_control/logstore/gorm_test.go rename to backend/plugins/domain/risk_control/logstore/gorm_test.go diff --git a/plugins/domain/risk_control/logstore/imports_test.go b/backend/plugins/domain/risk_control/logstore/imports_test.go similarity index 67% rename from plugins/domain/risk_control/logstore/imports_test.go rename to backend/plugins/domain/risk_control/logstore/imports_test.go index 8376dd3e..015195bb 100644 --- a/plugins/domain/risk_control/logstore/imports_test.go +++ b/backend/plugins/domain/risk_control/logstore/imports_test.go @@ -9,15 +9,15 @@ import ( "testing" ) -// plugins/domain 不得直接 import 已废弃的 pkg/persistence。 +// plugins/domain 不得直接 import 已废弃的 internal。 var forbiddenImports = []string{ - "github.com/Rain-kl/Wavelet/pkg/idgen", - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore", + "github.com/Rain-kl/Wavelet/internal", + "github.com/Rain-kl/Wavelet/backend/internal", } func TestAppsMustNotImportPersistenceDirectly(t *testing.T) { - t.Chdir("../../../..") - out, err := exec.Command("go", "list", "-test", "-f", `{{.ImportPath}} {{join .Imports " "}}`, "./plugins/domain/...").Output() + t.Chdir("../../../../..") + out, err := exec.Command("go", "list", "-test", "-f", `{{.ImportPath}} {{join .Imports " "}}`, "./backend/plugins/domain/...").Output() if err != nil { t.Fatalf("go list: %v", err) } @@ -27,7 +27,7 @@ func TestAppsMustNotImportPersistenceDirectly(t *testing.T) { continue } pkg := fields[0] - if !strings.HasPrefix(pkg, "github.com/Rain-kl/Wavelet/plugins/domain") { + if !strings.HasPrefix(pkg, "github.com/Rain-kl/Wavelet/backend/plugins/domain") { continue } for _, imp := range fields[1:] { diff --git a/plugins/domain/risk_control/logstore/logstore.go b/backend/plugins/domain/risk_control/logstore/logstore.go similarity index 100% rename from plugins/domain/risk_control/logstore/logstore.go rename to backend/plugins/domain/risk_control/logstore/logstore.go diff --git a/plugins/domain/risk_control/logstore/migrations-clickhouse/00001_initial.sql b/backend/plugins/domain/risk_control/logstore/migrations-clickhouse/00001_initial.sql similarity index 100% rename from plugins/domain/risk_control/logstore/migrations-clickhouse/00001_initial.sql rename to backend/plugins/domain/risk_control/logstore/migrations-clickhouse/00001_initial.sql diff --git a/plugins/domain/risk_control/logstore/migrations/00001_initial.sql b/backend/plugins/domain/risk_control/logstore/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/risk_control/logstore/migrations/00001_initial.sql rename to backend/plugins/domain/risk_control/logstore/migrations/00001_initial.sql diff --git a/plugins/domain/risk_control/logstore/models.go b/backend/plugins/domain/risk_control/logstore/models.go similarity index 100% rename from plugins/domain/risk_control/logstore/models.go rename to backend/plugins/domain/risk_control/logstore/models.go diff --git a/plugins/domain/risk_control/logstore/partition_cleanup.go b/backend/plugins/domain/risk_control/logstore/partition_cleanup.go similarity index 100% rename from plugins/domain/risk_control/logstore/partition_cleanup.go rename to backend/plugins/domain/risk_control/logstore/partition_cleanup.go diff --git a/plugins/domain/risk_control/logstore/partition_cleanup_test.go b/backend/plugins/domain/risk_control/logstore/partition_cleanup_test.go similarity index 100% rename from plugins/domain/risk_control/logstore/partition_cleanup_test.go rename to backend/plugins/domain/risk_control/logstore/partition_cleanup_test.go diff --git a/plugins/domain/risk_control/logstore/provider.go b/backend/plugins/domain/risk_control/logstore/provider.go similarity index 96% rename from plugins/domain/risk_control/logstore/provider.go rename to backend/plugins/domain/risk_control/logstore/provider.go index 1e30897d..3b8ee988 100644 --- a/plugins/domain/risk_control/logstore/provider.go +++ b/backend/plugins/domain/risk_control/logstore/provider.go @@ -10,9 +10,9 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/logger" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/risk_control/middleware.go b/backend/plugins/domain/risk_control/middleware.go similarity index 87% rename from plugins/domain/risk_control/middleware.go rename to backend/plugins/domain/risk_control/middleware.go index 53414dac..e9c74d50 100644 --- a/plugins/domain/risk_control/middleware.go +++ b/backend/plugins/domain/risk_control/middleware.go @@ -9,12 +9,12 @@ import ( "net/http" "time" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/risk_control/middleware_test.go b/backend/plugins/domain/risk_control/middleware_test.go similarity index 93% rename from plugins/domain/risk_control/middleware_test.go rename to backend/plugins/domain/risk_control/middleware_test.go index 238ad7a8..67d62bdc 100644 --- a/plugins/domain/risk_control/middleware_test.go +++ b/backend/plugins/domain/risk_control/middleware_test.go @@ -12,13 +12,13 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/batchwriter" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/batchwriter" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" "github.com/gin-gonic/gin" "github.com/stretchr/testify/assert" ) diff --git a/plugins/domain/risk_control/models.go b/backend/plugins/domain/risk_control/models.go similarity index 100% rename from plugins/domain/risk_control/models.go rename to backend/plugins/domain/risk_control/models.go diff --git a/plugins/domain/risk_control/plugin.go b/backend/plugins/domain/risk_control/plugin.go similarity index 96% rename from plugins/domain/risk_control/plugin.go rename to backend/plugins/domain/risk_control/plugin.go index abafb4a0..304be9f8 100644 --- a/plugins/domain/risk_control/plugin.go +++ b/backend/plugins/domain/risk_control/plugin.go @@ -8,8 +8,8 @@ import ( "context" "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/risk_control/plugin_test.go b/backend/plugins/domain/risk_control/plugin_test.go similarity index 89% rename from plugins/domain/risk_control/plugin_test.go rename to backend/plugins/domain/risk_control/plugin_test.go index 4ab89607..73cf064c 100644 --- a/plugins/domain/risk_control/plugin_test.go +++ b/backend/plugins/domain/risk_control/plugin_test.go @@ -11,8 +11,8 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" ) func TestRiskControlPluginUnit(t *testing.T) { diff --git a/plugins/domain/system/plugin.go b/backend/plugins/domain/system/plugin.go similarity index 89% rename from plugins/domain/system/plugin.go rename to backend/plugins/domain/system/plugin.go index 2b89ed0d..f02c6d05 100644 --- a/plugins/domain/system/plugin.go +++ b/backend/plugins/domain/system/plugin.go @@ -7,10 +7,10 @@ package system import ( "net/http" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/pkg/config" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/upload/cache/access_cache.go b/backend/plugins/domain/upload/cache/access_cache.go similarity index 90% rename from plugins/domain/upload/cache/access_cache.go rename to backend/plugins/domain/upload/cache/access_cache.go index 2b5bf649..20bd13f4 100644 --- a/plugins/domain/upload/cache/access_cache.go +++ b/backend/plugins/domain/upload/cache/access_cache.go @@ -11,12 +11,12 @@ import ( "sync" "time" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) const fileAccessInvalidationChannel = "upload:file_access_invalidation" diff --git a/plugins/domain/upload/cache/access_cache_test.go b/backend/plugins/domain/upload/cache/access_cache_test.go similarity index 92% rename from plugins/domain/upload/cache/access_cache_test.go rename to backend/plugins/domain/upload/cache/access_cache_test.go index ba838cc2..b5706738 100644 --- a/plugins/domain/upload/cache/access_cache_test.go +++ b/backend/plugins/domain/upload/cache/access_cache_test.go @@ -8,9 +8,9 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" ) func TestLoadMigrationAccessStateCachesResult(t *testing.T) { diff --git a/plugins/domain/upload/cache/meta_cache.go b/backend/plugins/domain/upload/cache/meta_cache.go similarity index 93% rename from plugins/domain/upload/cache/meta_cache.go rename to backend/plugins/domain/upload/cache/meta_cache.go index daf74faa..8317619a 100644 --- a/plugins/domain/upload/cache/meta_cache.go +++ b/backend/plugins/domain/upload/cache/meta_cache.go @@ -9,11 +9,11 @@ import ( "fmt" "sync" - "github.com/Rain-kl/Wavelet/pkg/cache/ram" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/cache/ram" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/upload/cache/meta_cache_test.go b/backend/plugins/domain/upload/cache/meta_cache_test.go similarity index 97% rename from plugins/domain/upload/cache/meta_cache_test.go rename to backend/plugins/domain/upload/cache/meta_cache_test.go index 6a3ae297..1458a388 100644 --- a/plugins/domain/upload/cache/meta_cache_test.go +++ b/backend/plugins/domain/upload/cache/meta_cache_test.go @@ -9,9 +9,9 @@ import ( "testing" "time" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/errs.go b/backend/plugins/domain/upload/errs.go similarity index 96% rename from plugins/domain/upload/errs.go rename to backend/plugins/domain/upload/errs.go index 996c8e6d..5e099fe1 100644 --- a/plugins/domain/upload/errs.go +++ b/backend/plugins/domain/upload/errs.go @@ -5,7 +5,7 @@ // Package upload 提供文件上传与下载功能 package upload -import "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" +import "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" // 文件管理常量 const ( diff --git a/plugins/domain/upload/exports.go b/backend/plugins/domain/upload/exports.go similarity index 87% rename from plugins/domain/upload/exports.go rename to backend/plugins/domain/upload/exports.go index 2501533a..a1fa4bf4 100644 --- a/plugins/domain/upload/exports.go +++ b/backend/plugins/domain/upload/exports.go @@ -4,14 +4,14 @@ package upload import ( - "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/filesrv" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/handler" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/ingest" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - uploadtask "github.com/Rain-kl/Wavelet/plugins/domain/upload/task" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/util" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/filesrv" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/handler" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/ingest" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + uploadtask "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/task" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/util" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) // HTTP handlers diff --git a/plugins/domain/upload/filesrv/file_server.go b/backend/plugins/domain/upload/filesrv/file_server.go similarity index 92% rename from plugins/domain/upload/filesrv/file_server.go rename to backend/plugins/domain/upload/filesrv/file_server.go index 3a5f1684..e966b83f 100644 --- a/plugins/domain/upload/filesrv/file_server.go +++ b/backend/plugins/domain/upload/filesrv/file_server.go @@ -15,18 +15,18 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - pkgutil "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/util" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/diskcache" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + pkgutil "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/util" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/diskcache" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" "github.com/gin-gonic/gin" "golang.org/x/sync/singleflight" "gorm.io/gorm" diff --git a/plugins/domain/upload/filesrv/file_server_test.go b/backend/plugins/domain/upload/filesrv/file_server_test.go similarity index 95% rename from plugins/domain/upload/filesrv/file_server_test.go rename to backend/plugins/domain/upload/filesrv/file_server_test.go index 10fb1f54..2cd928cd 100644 --- a/plugins/domain/upload/filesrv/file_server_test.go +++ b/backend/plugins/domain/upload/filesrv/file_server_test.go @@ -23,15 +23,15 @@ import ( "github.com/gin-gonic/gin" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadutil "github.com/Rain-kl/Wavelet/plugins/domain/upload/util" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/diskcache" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadutil "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/util" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/diskcache" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) func init() { diff --git a/plugins/domain/upload/handler/file_management.go b/backend/plugins/domain/upload/handler/file_management.go similarity index 94% rename from plugins/domain/upload/handler/file_management.go rename to backend/plugins/domain/upload/handler/file_management.go index e0f88b94..fb8513db 100644 --- a/plugins/domain/upload/handler/file_management.go +++ b/backend/plugins/domain/upload/handler/file_management.go @@ -9,14 +9,14 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/ingest" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/repository" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/ingest" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/repository" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" ) type listFilesRequest struct { diff --git a/plugins/domain/upload/handler/file_management_test.go b/backend/plugins/domain/upload/handler/file_management_test.go similarity index 89% rename from plugins/domain/upload/handler/file_management_test.go rename to backend/plugins/domain/upload/handler/file_management_test.go index 4903c183..0fc03166 100644 --- a/plugins/domain/upload/handler/file_management_test.go +++ b/backend/plugins/domain/upload/handler/file_management_test.go @@ -11,9 +11,9 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" ) func TestGetDistinctUploadTypes(t *testing.T) { diff --git a/plugins/domain/upload/handler/logics.go b/backend/plugins/domain/upload/handler/logics.go similarity index 91% rename from plugins/domain/upload/handler/logics.go rename to backend/plugins/domain/upload/handler/logics.go index b43c1db0..ee262cac 100644 --- a/plugins/domain/upload/handler/logics.go +++ b/backend/plugins/domain/upload/handler/logics.go @@ -10,9 +10,9 @@ import ( "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/ingest" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/repository" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/ingest" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/repository" ) func listUploadFiles(ctx context.Context, filter repository.UploadListFilter) (int64, []models.Upload, error) { diff --git a/plugins/domain/upload/handler/routers.go b/backend/plugins/domain/upload/handler/routers.go similarity index 93% rename from plugins/domain/upload/handler/routers.go rename to backend/plugins/domain/upload/handler/routers.go index 90e5b5d3..f4e292bd 100644 --- a/plugins/domain/upload/handler/routers.go +++ b/backend/plugins/domain/upload/handler/routers.go @@ -22,16 +22,16 @@ import ( "strconv" "strings" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/pkg/response" - pkgutil "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/filesrv" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/ingest" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/util" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + pkgutil "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/filesrv" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/ingest" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/util" "github.com/gin-gonic/gin" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/handler/routers_test.go b/backend/plugins/domain/upload/handler/routers_test.go similarity index 98% rename from plugins/domain/upload/handler/routers_test.go rename to backend/plugins/domain/upload/handler/routers_test.go index 03beaa9d..96abdc00 100644 --- a/plugins/domain/upload/handler/routers_test.go +++ b/backend/plugins/domain/upload/handler/routers_test.go @@ -19,14 +19,14 @@ import ( "testing" "time" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" "github.com/gin-gonic/gin" ) diff --git a/plugins/domain/upload/handler/stats.go b/backend/plugins/domain/upload/handler/stats.go similarity index 96% rename from plugins/domain/upload/handler/stats.go rename to backend/plugins/domain/upload/handler/stats.go index 1f3da760..7031970e 100644 --- a/plugins/domain/upload/handler/stats.go +++ b/backend/plugins/domain/upload/handler/stats.go @@ -9,8 +9,8 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/pkg/response" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" ) type trendItem struct { diff --git a/plugins/domain/upload/ingest/errors.go b/backend/plugins/domain/upload/ingest/errors.go similarity index 85% rename from plugins/domain/upload/ingest/errors.go rename to backend/plugins/domain/upload/ingest/errors.go index 1d33e945..c7e8aa95 100644 --- a/plugins/domain/upload/ingest/errors.go +++ b/backend/plugins/domain/upload/ingest/errors.go @@ -6,7 +6,7 @@ package ingest import ( "errors" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" ) // ErrForbidden indicates the caller is not allowed to mutate the upload record. diff --git a/plugins/domain/upload/ingest/helpers.go b/backend/plugins/domain/upload/ingest/helpers.go similarity index 88% rename from plugins/domain/upload/ingest/helpers.go rename to backend/plugins/domain/upload/ingest/helpers.go index a2804524..08b11d25 100644 --- a/plugins/domain/upload/ingest/helpers.go +++ b/backend/plugins/domain/upload/ingest/helpers.go @@ -12,16 +12,16 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/idgen" - uploadcache "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/repository" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + uploadcache "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/repository" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/ingest/ingest.go b/backend/plugins/domain/upload/ingest/ingest.go similarity index 92% rename from plugins/domain/upload/ingest/ingest.go rename to backend/plugins/domain/upload/ingest/ingest.go index 60b3fdc3..7da2b64c 100644 --- a/plugins/domain/upload/ingest/ingest.go +++ b/backend/plugins/domain/upload/ingest/ingest.go @@ -7,8 +7,8 @@ import ( "context" "errors" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/repository" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/repository" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/ingest/ingest_test.go b/backend/plugins/domain/upload/ingest/ingest_test.go similarity index 97% rename from plugins/domain/upload/ingest/ingest_test.go rename to backend/plugins/domain/upload/ingest/ingest_test.go index bcdb9bcb..7368a328 100644 --- a/plugins/domain/upload/ingest/ingest_test.go +++ b/backend/plugins/domain/upload/ingest/ingest_test.go @@ -13,10 +13,10 @@ import ( "testing" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) func TestIngestPolicyCreateIncrementsStats(t *testing.T) { diff --git a/plugins/domain/upload/ingest/remove.go b/backend/plugins/domain/upload/ingest/remove.go similarity index 80% rename from plugins/domain/upload/ingest/remove.go rename to backend/plugins/domain/upload/ingest/remove.go index 161cc8ac..304817cb 100644 --- a/plugins/domain/upload/ingest/remove.go +++ b/backend/plugins/domain/upload/ingest/remove.go @@ -6,11 +6,11 @@ package ingest import ( "context" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - uploadcache "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/repository" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" + uploadcache "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/repository" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/ingest/types.go b/backend/plugins/domain/upload/ingest/types.go similarity index 95% rename from plugins/domain/upload/ingest/types.go rename to backend/plugins/domain/upload/ingest/types.go index 8575852b..e0a46283 100644 --- a/plugins/domain/upload/ingest/types.go +++ b/backend/plugins/domain/upload/ingest/types.go @@ -7,7 +7,7 @@ package ingest import ( "io" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" ) // Policy controls how ingest handles hash collisions and record creation. diff --git a/plugins/domain/upload/migrations/00001_initial.sql b/backend/plugins/domain/upload/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/upload/migrations/00001_initial.sql rename to backend/plugins/domain/upload/migrations/00001_initial.sql diff --git a/plugins/domain/upload/models.go b/backend/plugins/domain/upload/models.go similarity index 91% rename from plugins/domain/upload/models.go rename to backend/plugins/domain/upload/models.go index c64ee407..b9ce83cd 100644 --- a/plugins/domain/upload/models.go +++ b/backend/plugins/domain/upload/models.go @@ -5,7 +5,7 @@ package upload import ( - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" ) // UploadStatus 上传状态类型别名 diff --git a/plugins/domain/upload/models/models.go b/backend/plugins/domain/upload/models/models.go similarity index 100% rename from plugins/domain/upload/models/models.go rename to backend/plugins/domain/upload/models/models.go diff --git a/plugins/domain/upload/plugin.go b/backend/plugins/domain/upload/plugin.go similarity index 92% rename from plugins/domain/upload/plugin.go rename to backend/plugins/domain/upload/plugin.go index 78d07567..ca87ce56 100644 --- a/plugins/domain/upload/plugin.go +++ b/backend/plugins/domain/upload/plugin.go @@ -8,12 +8,12 @@ import ( "context" "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/core/extpoints" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/filesrv" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/handler" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/task" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/filesrv" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/handler" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/task" "github.com/gin-gonic/gin" "github.com/hibiken/asynq" ) diff --git a/plugins/domain/upload/repository.go b/backend/plugins/domain/upload/repository.go similarity index 96% rename from plugins/domain/upload/repository.go rename to backend/plugins/domain/upload/repository.go index 6fae5726..82e6ce55 100644 --- a/plugins/domain/upload/repository.go +++ b/backend/plugins/domain/upload/repository.go @@ -9,9 +9,9 @@ import ( "gorm.io/gorm" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // UploadListFilter filters paginated upload queries. diff --git a/plugins/domain/upload/repository/repository.go b/backend/plugins/domain/upload/repository/repository.go similarity index 95% rename from plugins/domain/upload/repository/repository.go rename to backend/plugins/domain/upload/repository/repository.go index bd491d27..34594c1f 100644 --- a/plugins/domain/upload/repository/repository.go +++ b/backend/plugins/domain/upload/repository/repository.go @@ -9,9 +9,9 @@ import ( "context" "strings" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/shared/constants.go b/backend/plugins/domain/upload/shared/constants.go similarity index 100% rename from plugins/domain/upload/shared/constants.go rename to backend/plugins/domain/upload/shared/constants.go diff --git a/plugins/domain/upload/shared/errs.go b/backend/plugins/domain/upload/shared/errs.go similarity index 100% rename from plugins/domain/upload/shared/errs.go rename to backend/plugins/domain/upload/shared/errs.go diff --git a/plugins/domain/upload/stats/category.go b/backend/plugins/domain/upload/stats/category.go similarity index 94% rename from plugins/domain/upload/stats/category.go rename to backend/plugins/domain/upload/stats/category.go index 466dafe8..754676c4 100644 --- a/plugins/domain/upload/stats/category.go +++ b/backend/plugins/domain/upload/stats/category.go @@ -7,7 +7,7 @@ package stats import ( "strings" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/util" ) const ( diff --git a/plugins/domain/upload/stats/stats_counter.go b/backend/plugins/domain/upload/stats/stats_counter.go similarity index 95% rename from plugins/domain/upload/stats/stats_counter.go rename to backend/plugins/domain/upload/stats/stats_counter.go index 2ed8de33..3bea8570 100644 --- a/plugins/domain/upload/stats/stats_counter.go +++ b/backend/plugins/domain/upload/stats/stats_counter.go @@ -7,9 +7,9 @@ import ( "context" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" "gorm.io/gorm/clause" ) diff --git a/plugins/domain/upload/stats/stats_counter_test.go b/backend/plugins/domain/upload/stats/stats_counter_test.go similarity index 93% rename from plugins/domain/upload/stats/stats_counter_test.go rename to backend/plugins/domain/upload/stats/stats_counter_test.go index 4f570810..68b0832e 100644 --- a/plugins/domain/upload/stats/stats_counter_test.go +++ b/backend/plugins/domain/upload/stats/stats_counter_test.go @@ -8,9 +8,9 @@ import ( "testing" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/upload/storage/access_state.go b/backend/plugins/domain/upload/storage/access_state.go similarity index 91% rename from plugins/domain/upload/storage/access_state.go rename to backend/plugins/domain/upload/storage/access_state.go index 62a3c03f..f1a64b4c 100644 --- a/plugins/domain/upload/storage/access_state.go +++ b/backend/plugins/domain/upload/storage/access_state.go @@ -9,9 +9,9 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) // MigrationAccessState captures cached migration maintenance state. diff --git a/plugins/domain/upload/storage/migration.go b/backend/plugins/domain/upload/storage/migration.go similarity index 94% rename from plugins/domain/upload/storage/migration.go rename to backend/plugins/domain/upload/storage/migration.go index 91af0cd7..589bf9c7 100644 --- a/plugins/domain/upload/storage/migration.go +++ b/backend/plugins/domain/upload/storage/migration.go @@ -10,8 +10,8 @@ import ( "fmt" "strings" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) // StorageMigrationTask is the Asynq task name for storage migration. diff --git a/plugins/domain/upload/storage/storage_ops.go b/backend/plugins/domain/upload/storage/storage_ops.go similarity index 79% rename from plugins/domain/upload/storage/storage_ops.go rename to backend/plugins/domain/upload/storage/storage_ops.go index f6f978ee..2557588f 100644 --- a/plugins/domain/upload/storage/storage_ops.go +++ b/backend/plugins/domain/upload/storage/storage_ops.go @@ -6,9 +6,9 @@ package storage import ( "context" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) // ReadOnly checks if the storage system is in read-only maintenance mode. diff --git a/plugins/domain/upload/task/cleanup.go b/backend/plugins/domain/upload/task/cleanup.go similarity index 88% rename from plugins/domain/upload/task/cleanup.go rename to backend/plugins/domain/upload/task/cleanup.go index da57a884..99cdd814 100644 --- a/plugins/domain/upload/task/cleanup.go +++ b/backend/plugins/domain/upload/task/cleanup.go @@ -12,16 +12,16 @@ import ( "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/pkg/logger" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - logstore "github.com/Rain-kl/Wavelet/plugins/domain/risk_control/logstore" - uploadcache "github.com/Rain-kl/Wavelet/plugins/domain/upload/cache" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + logstore "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control/logstore" + uploadcache "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) const ( diff --git a/plugins/domain/upload/task/rebuild_stats.go b/backend/plugins/domain/upload/task/rebuild_stats.go similarity index 89% rename from plugins/domain/upload/task/rebuild_stats.go rename to backend/plugins/domain/upload/task/rebuild_stats.go index 8f34f2e0..02e96c95 100644 --- a/plugins/domain/upload/task/rebuild_stats.go +++ b/backend/plugins/domain/upload/task/rebuild_stats.go @@ -7,10 +7,10 @@ import ( "context" "fmt" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/upload/task/rebuild_stats_test.go b/backend/plugins/domain/upload/task/rebuild_stats_test.go similarity index 90% rename from plugins/domain/upload/task/rebuild_stats_test.go rename to backend/plugins/domain/upload/task/rebuild_stats_test.go index e634d821..5ce81498 100644 --- a/plugins/domain/upload/task/rebuild_stats_test.go +++ b/backend/plugins/domain/upload/task/rebuild_stats_test.go @@ -8,9 +8,9 @@ import ( "testing" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) func TestRebuildUploadStatsHandler_Execute(t *testing.T) { diff --git a/plugins/domain/upload/task/storage_migration.go b/backend/plugins/domain/upload/task/storage_migration.go similarity index 95% rename from plugins/domain/upload/task/storage_migration.go rename to backend/plugins/domain/upload/task/storage_migration.go index eb3bd802..08b5badc 100644 --- a/plugins/domain/upload/task/storage_migration.go +++ b/backend/plugins/domain/upload/task/storage_migration.go @@ -17,14 +17,14 @@ import ( "golang.org/x/sync/errgroup" - cache "github.com/Rain-kl/Wavelet/plugins/infra/cache" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - uploadstats "github.com/Rain-kl/Wavelet/plugins/domain/upload/stats" - uploadstorage "github.com/Rain-kl/Wavelet/plugins/domain/upload/storage" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + uploadstats "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/stats" + uploadstorage "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + cache "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) const ( diff --git a/plugins/domain/upload/task/storage_migration_task_test.go b/backend/plugins/domain/upload/task/storage_migration_task_test.go similarity index 96% rename from plugins/domain/upload/task/storage_migration_task_test.go rename to backend/plugins/domain/upload/task/storage_migration_task_test.go index e03746a6..7b026268 100644 --- a/plugins/domain/upload/task/storage_migration_task_test.go +++ b/backend/plugins/domain/upload/task/storage_migration_task_test.go @@ -16,10 +16,10 @@ import ( "testing" "time" - cache "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + cache "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" "github.com/alicebob/miniredis/v2" "github.com/redis/go-redis/v9" ) diff --git a/plugins/domain/upload/task/tasks.go b/backend/plugins/domain/upload/task/tasks.go similarity index 93% rename from plugins/domain/upload/task/tasks.go rename to backend/plugins/domain/upload/task/tasks.go index 31de72a2..c76a65f4 100644 --- a/plugins/domain/upload/task/tasks.go +++ b/backend/plugins/domain/upload/task/tasks.go @@ -12,11 +12,11 @@ import ( "strings" "sync" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/filesrv" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/filesrv" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/domain/upload/task/tasks_test.go b/backend/plugins/domain/upload/task/tasks_test.go similarity index 95% rename from plugins/domain/upload/task/tasks_test.go rename to backend/plugins/domain/upload/task/tasks_test.go index d940461a..87cd275f 100644 --- a/plugins/domain/upload/task/tasks_test.go +++ b/backend/plugins/domain/upload/task/tasks_test.go @@ -17,15 +17,15 @@ import ( "testing" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/testhelper" - msg "github.com/Rain-kl/Wavelet/plugins/domain/message_gateway" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/filesrv" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/diskcache" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + msg "github.com/Rain-kl/Wavelet/backend/plugins/domain/message_gateway" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/filesrv" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/diskcache" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) diff --git a/plugins/domain/upload/util/media.go b/backend/plugins/domain/upload/util/media.go similarity index 94% rename from plugins/domain/upload/util/media.go rename to backend/plugins/domain/upload/util/media.go index dd725cd5..a85e4dd1 100644 --- a/plugins/domain/upload/util/media.go +++ b/backend/plugins/domain/upload/util/media.go @@ -6,7 +6,7 @@ package util import ( "strings" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" ) // IsImageExtension reports whether ext is a common image format. diff --git a/plugins/domain/upload/util/utils.go b/backend/plugins/domain/upload/util/utils.go similarity index 96% rename from plugins/domain/upload/util/utils.go rename to backend/plugins/domain/upload/util/utils.go index d10d3914..32f7092c 100644 --- a/plugins/domain/upload/util/utils.go +++ b/backend/plugins/domain/upload/util/utils.go @@ -16,7 +16,7 @@ import ( "io" "strings" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/shared" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/shared" "github.com/deepteams/webp" _ "golang.org/x/image/webp" // Register WebP decoder for image.Decode ) diff --git a/plugins/domain/user/errs.go b/backend/plugins/domain/user/errs.go similarity index 100% rename from plugins/domain/user/errs.go rename to backend/plugins/domain/user/errs.go diff --git a/plugins/domain/user/handlers.go b/backend/plugins/domain/user/handlers.go similarity index 97% rename from plugins/domain/user/handlers.go rename to backend/plugins/domain/user/handlers.go index 86515685..7f3995b8 100644 --- a/plugins/domain/user/handlers.go +++ b/backend/plugins/domain/user/handlers.go @@ -12,10 +12,10 @@ import ( "strconv" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/response" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/response" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" ) @@ -63,8 +63,14 @@ func getUserIDFromSession(c *gin.Context) uint64 { case uint64: return v case int64: + if v < 0 { + return 0 + } return uint64(v) case float64: + if v < 0 { + return 0 + } return uint64(v) case string: id, _ := strconv.ParseUint(v, 10, 64) diff --git a/plugins/domain/user/migrations/00001_initial.sql b/backend/plugins/domain/user/migrations/00001_initial.sql similarity index 100% rename from plugins/domain/user/migrations/00001_initial.sql rename to backend/plugins/domain/user/migrations/00001_initial.sql diff --git a/plugins/domain/user/models.go b/backend/plugins/domain/user/models.go similarity index 98% rename from plugins/domain/user/models.go rename to backend/plugins/domain/user/models.go index e083e65f..0f5e8111 100644 --- a/plugins/domain/user/models.go +++ b/backend/plugins/domain/user/models.go @@ -10,7 +10,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) // AccessToken 个人访问令牌实体 diff --git a/plugins/domain/user/plugin.go b/backend/plugins/domain/user/plugin.go similarity index 86% rename from plugins/domain/user/plugin.go rename to backend/plugins/domain/user/plugin.go index 01f9fa5e..a7c2bf31 100644 --- a/plugins/domain/user/plugin.go +++ b/backend/plugins/domain/user/plugin.go @@ -8,9 +8,9 @@ import ( "context" "embed" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" "github.com/gin-gonic/gin" "github.com/hibiken/asynq" ) @@ -65,12 +65,16 @@ func (p *Plugin) Manifest() core.Manifest { // Apply registers user migrations, services, routes, tasks, schedules, and settings into the Context. func (p *Plugin) Apply(ctx *core.Context) error { // 0. Resolve auth service for middleware (via IoC, not direct import) - var authSvc contracts.AuthService - if err := core.Using[contracts.AuthService](ctx, func(svc contracts.AuthService) { authSvc = svc }); err != nil { - return err + var loginMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + var noTokenMW gin.HandlerFunc = func(c *gin.Context) { c.Next() } + if authSvc, err := core.Inject[contracts.AuthService](ctx); err == nil && authSvc != nil { + if mw, ok := authSvc.RequireAuthMiddleware().(gin.HandlerFunc); ok { + loginMW = mw + } + if mw, ok := authSvc.DisallowTokenAuthMiddleware().(gin.HandlerFunc); ok { + noTokenMW = mw + } } - loginMW := authSvc.RequireAuthMiddleware().(gin.HandlerFunc) - noTokenMW := authSvc.DisallowTokenAuthMiddleware().(gin.HandlerFunc) // 1. Register migrations ctx.Migrations().Register("user", userMigrations) @@ -142,4 +146,4 @@ func (p *Plugin) Apply(ctx *core.Context) error { }) return nil -} \ No newline at end of file +} diff --git a/plugins/domain/user/plugin_test.go b/backend/plugins/domain/user/plugin_test.go similarity index 92% rename from plugins/domain/user/plugin_test.go rename to backend/plugins/domain/user/plugin_test.go index e0fe597d..90378678 100644 --- a/plugins/domain/user/plugin_test.go +++ b/backend/plugins/domain/user/plugin_test.go @@ -13,10 +13,10 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/domain/user" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/user" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) func setupTestDB(t *testing.T) *gorm.DB { diff --git a/plugins/domain/user/repository.go b/backend/plugins/domain/user/repository.go similarity index 97% rename from plugins/domain/user/repository.go rename to backend/plugins/domain/user/repository.go index e8d423dd..22afeb6f 100644 --- a/plugins/domain/user/repository.go +++ b/backend/plugins/domain/user/repository.go @@ -9,8 +9,8 @@ import ( "strings" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/domain/user/service.go b/backend/plugins/domain/user/service.go similarity index 96% rename from plugins/domain/user/service.go rename to backend/plugins/domain/user/service.go index da89eb07..a9f1ef04 100644 --- a/plugins/domain/user/service.go +++ b/backend/plugins/domain/user/service.go @@ -11,11 +11,11 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/core/contracts" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" - pkgu "github.com/Rain-kl/Wavelet/pkg/util" + pkgu "github.com/Rain-kl/Wavelet/backend/pkg/util" ) func toUserDTO(u *User) *contracts.UserDTO { diff --git a/plugins/drivers/driver_asynq_cron/errs.go b/backend/plugins/drivers/driver_asynq_cron/errs.go similarity index 100% rename from plugins/drivers/driver_asynq_cron/errs.go rename to backend/plugins/drivers/driver_asynq_cron/errs.go diff --git a/plugins/drivers/driver_asynq_cron/migrations/00001_initial.sql b/backend/plugins/drivers/driver_asynq_cron/migrations/00001_initial.sql similarity index 100% rename from plugins/drivers/driver_asynq_cron/migrations/00001_initial.sql rename to backend/plugins/drivers/driver_asynq_cron/migrations/00001_initial.sql diff --git a/plugins/drivers/driver_asynq_cron/plugin.go b/backend/plugins/drivers/driver_asynq_cron/plugin.go similarity index 97% rename from plugins/drivers/driver_asynq_cron/plugin.go rename to backend/plugins/drivers/driver_asynq_cron/plugin.go index 16112c29..9d7315e4 100644 --- a/plugins/drivers/driver_asynq_cron/plugin.go +++ b/backend/plugins/drivers/driver_asynq_cron/plugin.go @@ -14,8 +14,8 @@ import ( "github.com/hibiken/asynq" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) //go:embed migrations/*.sql diff --git a/plugins/drivers/driver_asynq_cron/schedule.go b/backend/plugins/drivers/driver_asynq_cron/schedule.go similarity index 94% rename from plugins/drivers/driver_asynq_cron/schedule.go rename to backend/plugins/drivers/driver_asynq_cron/schedule.go index 1685a918..ee840a84 100644 --- a/plugins/drivers/driver_asynq_cron/schedule.go +++ b/backend/plugins/drivers/driver_asynq_cron/schedule.go @@ -7,7 +7,7 @@ import ( "context" "time" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // Schedule 定时任务配置表 diff --git a/plugins/drivers/driver_asynq_cron/scheduler.go b/backend/plugins/drivers/driver_asynq_cron/scheduler.go similarity index 96% rename from plugins/drivers/driver_asynq_cron/scheduler.go rename to backend/plugins/drivers/driver_asynq_cron/scheduler.go index 124684e9..cf93e6ba 100644 --- a/plugins/drivers/driver_asynq_cron/scheduler.go +++ b/backend/plugins/drivers/driver_asynq_cron/scheduler.go @@ -13,8 +13,8 @@ import ( "github.com/hibiken/asynq" - "github.com/Rain-kl/Wavelet/pkg/logger" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" ) var ( diff --git a/plugins/drivers/driver_asynq_cron/scheduler_test.go b/backend/plugins/drivers/driver_asynq_cron/scheduler_test.go similarity index 100% rename from plugins/drivers/driver_asynq_cron/scheduler_test.go rename to backend/plugins/drivers/driver_asynq_cron/scheduler_test.go diff --git a/plugins/drivers/driver_asynq_worker/constants.go b/backend/plugins/drivers/driver_asynq_worker/constants.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/constants.go rename to backend/plugins/drivers/driver_asynq_worker/constants.go diff --git a/plugins/drivers/driver_asynq_worker/errs.go b/backend/plugins/drivers/driver_asynq_worker/errs.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/errs.go rename to backend/plugins/drivers/driver_asynq_worker/errs.go diff --git a/plugins/drivers/driver_asynq_worker/executor.go b/backend/plugins/drivers/driver_asynq_worker/executor.go similarity index 98% rename from plugins/drivers/driver_asynq_worker/executor.go rename to backend/plugins/drivers/driver_asynq_worker/executor.go index 928e2156..9e29efef 100644 --- a/plugins/drivers/driver_asynq_worker/executor.go +++ b/backend/plugins/drivers/driver_asynq_worker/executor.go @@ -19,10 +19,10 @@ import ( "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" - "github.com/Rain-kl/Wavelet/pkg/idgen" - "github.com/Rain-kl/Wavelet/pkg/logger" - otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + otel_trace "github.com/Rain-kl/Wavelet/backend/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) var ( diff --git a/plugins/drivers/driver_asynq_worker/executor_test.go b/backend/plugins/drivers/driver_asynq_worker/executor_test.go similarity index 99% rename from plugins/drivers/driver_asynq_worker/executor_test.go rename to backend/plugins/drivers/driver_asynq_worker/executor_test.go index cd03f550..847d38e7 100644 --- a/plugins/drivers/driver_asynq_worker/executor_test.go +++ b/backend/plugins/drivers/driver_asynq_worker/executor_test.go @@ -18,7 +18,7 @@ import ( "go.opentelemetry.io/otel/propagation" "go.opentelemetry.io/otel/trace" - "github.com/Rain-kl/Wavelet/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" ) // mockHandler 用于测试的模拟任务处理器 diff --git a/plugins/drivers/driver_asynq_worker/handler.go b/backend/plugins/drivers/driver_asynq_worker/handler.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/handler.go rename to backend/plugins/drivers/driver_asynq_worker/handler.go diff --git a/plugins/drivers/driver_asynq_worker/meta.go b/backend/plugins/drivers/driver_asynq_worker/meta.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/meta.go rename to backend/plugins/drivers/driver_asynq_worker/meta.go diff --git a/plugins/drivers/driver_asynq_worker/meta_test.go b/backend/plugins/drivers/driver_asynq_worker/meta_test.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/meta_test.go rename to backend/plugins/drivers/driver_asynq_worker/meta_test.go diff --git a/plugins/drivers/driver_asynq_worker/migrations/00001_initial.sql b/backend/plugins/drivers/driver_asynq_worker/migrations/00001_initial.sql similarity index 100% rename from plugins/drivers/driver_asynq_worker/migrations/00001_initial.sql rename to backend/plugins/drivers/driver_asynq_worker/migrations/00001_initial.sql diff --git a/plugins/drivers/driver_asynq_worker/permanent_error.go b/backend/plugins/drivers/driver_asynq_worker/permanent_error.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/permanent_error.go rename to backend/plugins/drivers/driver_asynq_worker/permanent_error.go diff --git a/plugins/drivers/driver_asynq_worker/permanent_error_test.go b/backend/plugins/drivers/driver_asynq_worker/permanent_error_test.go similarity index 100% rename from plugins/drivers/driver_asynq_worker/permanent_error_test.go rename to backend/plugins/drivers/driver_asynq_worker/permanent_error_test.go diff --git a/plugins/drivers/driver_asynq_worker/plugin.go b/backend/plugins/drivers/driver_asynq_worker/plugin.go similarity index 99% rename from plugins/drivers/driver_asynq_worker/plugin.go rename to backend/plugins/drivers/driver_asynq_worker/plugin.go index a0e4e35d..9b5dc3ea 100644 --- a/plugins/drivers/driver_asynq_worker/plugin.go +++ b/backend/plugins/drivers/driver_asynq_worker/plugin.go @@ -14,7 +14,7 @@ import ( "github.com/hibiken/asynq" - "github.com/Rain-kl/Wavelet/core" + "github.com/Rain-kl/Wavelet/backend/core" ) const ( diff --git a/plugins/drivers/driver_asynq_worker/task_repo.go b/backend/plugins/drivers/driver_asynq_worker/task_repo.go similarity index 94% rename from plugins/drivers/driver_asynq_worker/task_repo.go rename to backend/plugins/drivers/driver_asynq_worker/task_repo.go index f6c3064d..881830b0 100644 --- a/plugins/drivers/driver_asynq_worker/task_repo.go +++ b/backend/plugins/drivers/driver_asynq_worker/task_repo.go @@ -12,9 +12,9 @@ import ( "github.com/redis/go-redis/v9" - "github.com/Rain-kl/Wavelet/pkg/idgen" - cachepkg "github.com/Rain-kl/Wavelet/plugins/infra/cache" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/pkg/idgen" + cachepkg "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) const ( diff --git a/plugins/drivers/driver_asynq_worker/types.go b/backend/plugins/drivers/driver_asynq_worker/types.go similarity index 98% rename from plugins/drivers/driver_asynq_worker/types.go rename to backend/plugins/drivers/driver_asynq_worker/types.go index 03a9fe68..ade6a463 100644 --- a/plugins/drivers/driver_asynq_worker/types.go +++ b/backend/plugins/drivers/driver_asynq_worker/types.go @@ -10,7 +10,7 @@ import ( "gorm.io/gorm" - db "github.com/Rain-kl/Wavelet/plugins/infra/database" + db "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // TaskExecutionStatus 任务执行状态 diff --git a/plugins/drivers/driver_asynq_worker/utils.go b/backend/plugins/drivers/driver_asynq_worker/utils.go similarity index 98% rename from plugins/drivers/driver_asynq_worker/utils.go rename to backend/plugins/drivers/driver_asynq_worker/utils.go index 41d5b208..fd61ac2f 100644 --- a/plugins/drivers/driver_asynq_worker/utils.go +++ b/backend/plugins/drivers/driver_asynq_worker/utils.go @@ -9,7 +9,7 @@ import ( "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" ) type redisClientConnOpt struct { diff --git a/plugins/drivers/driver_asynq_worker/utils_test.go b/backend/plugins/drivers/driver_asynq_worker/utils_test.go similarity index 96% rename from plugins/drivers/driver_asynq_worker/utils_test.go rename to backend/plugins/drivers/driver_asynq_worker/utils_test.go index 1ab5bf5f..0354bfd6 100644 --- a/plugins/drivers/driver_asynq_worker/utils_test.go +++ b/backend/plugins/drivers/driver_asynq_worker/utils_test.go @@ -6,7 +6,7 @@ package driver_asynq_worker import ( "testing" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" "github.com/redis/go-redis/v9/maintnotifications" ) diff --git a/plugins/drivers/driver_http/engine.go b/backend/plugins/drivers/driver_http/engine.go similarity index 91% rename from plugins/drivers/driver_http/engine.go rename to backend/plugins/drivers/driver_http/engine.go index cba4be84..6bd9c48a 100644 --- a/plugins/drivers/driver_http/engine.go +++ b/backend/plugins/drivers/driver_http/engine.go @@ -16,11 +16,11 @@ import ( "syscall" "time" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/trace" - "github.com/Rain-kl/Wavelet/pkg/util" - "github.com/Rain-kl/Wavelet/plugins/domain/auth" - "github.com/Rain-kl/Wavelet/plugins/domain/risk_control" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/util" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/auth" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/risk_control" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/redis" "github.com/gin-gonic/gin" diff --git a/plugins/drivers/driver_http/middlewares.go b/backend/plugins/drivers/driver_http/middlewares.go similarity index 91% rename from plugins/drivers/driver_http/middlewares.go rename to backend/plugins/drivers/driver_http/middlewares.go index 8544b158..2289a881 100644 --- a/plugins/drivers/driver_http/middlewares.go +++ b/backend/plugins/drivers/driver_http/middlewares.go @@ -12,11 +12,11 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/config" - "github.com/Rain-kl/Wavelet/pkg/logger" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/response" - otel_trace "github.com/Rain-kl/Wavelet/pkg/trace" + "github.com/Rain-kl/Wavelet/backend/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/response" + otel_trace "github.com/Rain-kl/Wavelet/backend/pkg/trace" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "github.com/gin-gonic/gin" "go.opentelemetry.io/otel/codes" "go.opentelemetry.io/otel/trace" diff --git a/plugins/drivers/driver_http/middlewares_test.go b/backend/plugins/drivers/driver_http/middlewares_test.go similarity index 98% rename from plugins/drivers/driver_http/middlewares_test.go rename to backend/plugins/drivers/driver_http/middlewares_test.go index 12fc578b..78dbe4b8 100644 --- a/plugins/drivers/driver_http/middlewares_test.go +++ b/backend/plugins/drivers/driver_http/middlewares_test.go @@ -8,7 +8,7 @@ import ( "net/http/httptest" "testing" - "github.com/Rain-kl/Wavelet/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" "github.com/gin-gonic/gin" ) diff --git a/plugins/drivers/driver_http/plugin.go b/backend/plugins/drivers/driver_http/plugin.go similarity index 98% rename from plugins/drivers/driver_http/plugin.go rename to backend/plugins/drivers/driver_http/plugin.go index 5af542a5..38ee9f26 100644 --- a/plugins/drivers/driver_http/plugin.go +++ b/backend/plugins/drivers/driver_http/plugin.go @@ -15,8 +15,8 @@ import ( "github.com/gin-gonic/gin" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/pkg/util" ) const ( diff --git a/plugins/drivers/drivers_test.go b/backend/plugins/drivers/drivers_test.go similarity index 96% rename from plugins/drivers/drivers_test.go rename to backend/plugins/drivers/drivers_test.go index 07d44c3b..242835eb 100644 --- a/plugins/drivers/drivers_test.go +++ b/backend/plugins/drivers/drivers_test.go @@ -20,11 +20,11 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/extpoints" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_cron" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_asynq_worker" - "github.com/Rain-kl/Wavelet/plugins/drivers/driver_http" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/extpoints" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_cron" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_asynq_worker" + "github.com/Rain-kl/Wavelet/backend/plugins/drivers/driver_http" ) func init() { diff --git a/plugins/infra/cache/errs.go b/backend/plugins/infra/cache/errs.go similarity index 100% rename from plugins/infra/cache/errs.go rename to backend/plugins/infra/cache/errs.go diff --git a/plugins/infra/cache/plugin.go b/backend/plugins/infra/cache/plugin.go similarity index 96% rename from plugins/infra/cache/plugin.go rename to backend/plugins/infra/cache/plugin.go index 33498a57..ab994ecb 100644 --- a/plugins/infra/cache/plugin.go +++ b/backend/plugins/infra/cache/plugin.go @@ -11,10 +11,10 @@ import ( "sync" "time" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/cache/ram" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/cache/ram" + "github.com/Rain-kl/Wavelet/backend/pkg/util" "github.com/redis/go-redis/v9" ) diff --git a/plugins/infra/cache/plugin_test.go b/backend/plugins/infra/cache/plugin_test.go similarity index 92% rename from plugins/infra/cache/plugin_test.go rename to backend/plugins/infra/cache/plugin_test.go index d34ecf79..00705ca1 100644 --- a/plugins/infra/cache/plugin_test.go +++ b/backend/plugins/infra/cache/plugin_test.go @@ -13,9 +13,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) func TestCachePluginOperations(t *testing.T) { diff --git a/plugins/infra/cache/redis.go b/backend/plugins/infra/cache/redis.go similarity index 99% rename from plugins/infra/cache/redis.go rename to backend/plugins/infra/cache/redis.go index 5acc7e6c..e03aa91c 100644 --- a/plugins/infra/cache/redis.go +++ b/backend/plugins/infra/cache/redis.go @@ -12,7 +12,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" "github.com/redis/go-redis/extra/redisotel/v9" "github.com/redis/go-redis/v9" "github.com/redis/go-redis/v9/maintnotifications" diff --git a/plugins/infra/cache/redis_test.go b/backend/plugins/infra/cache/redis_test.go similarity index 100% rename from plugins/infra/cache/redis_test.go rename to backend/plugins/infra/cache/redis_test.go diff --git a/plugins/infra/database/clickhouse.go b/backend/plugins/infra/database/clickhouse.go similarity index 98% rename from plugins/infra/database/clickhouse.go rename to backend/plugins/infra/database/clickhouse.go index fc613222..6645a9f7 100644 --- a/plugins/infra/database/clickhouse.go +++ b/backend/plugins/infra/database/clickhouse.go @@ -16,7 +16,7 @@ import ( "github.com/ClickHouse/clickhouse-go/v2" "github.com/ClickHouse/clickhouse-go/v2/lib/driver" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" "go.opentelemetry.io/otel/attribute" clickhouseDriver "gorm.io/driver/clickhouse" "gorm.io/gorm" diff --git a/plugins/infra/database/plugin.go b/backend/plugins/infra/database/plugin.go similarity index 95% rename from plugins/infra/database/plugin.go rename to backend/plugins/infra/database/plugin.go index 4a768377..803f60bf 100644 --- a/plugins/infra/database/plugin.go +++ b/backend/plugins/infra/database/plugin.go @@ -7,8 +7,8 @@ package database import ( "context" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" "gorm.io/gorm" ) diff --git a/plugins/infra/database/plugin_test.go b/backend/plugins/infra/database/plugin_test.go similarity index 90% rename from plugins/infra/database/plugin_test.go rename to backend/plugins/infra/database/plugin_test.go index 6f5243ea..ec76fc7e 100644 --- a/plugins/infra/database/plugin_test.go +++ b/backend/plugins/infra/database/plugin_test.go @@ -13,9 +13,9 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) type Item struct { diff --git a/plugins/infra/database/postgres.go b/backend/plugins/infra/database/postgres.go similarity index 99% rename from plugins/infra/database/postgres.go rename to backend/plugins/infra/database/postgres.go index 25816982..f81318b7 100644 --- a/plugins/infra/database/postgres.go +++ b/backend/plugins/infra/database/postgres.go @@ -12,7 +12,7 @@ import ( "strconv" "time" - "github.com/Rain-kl/Wavelet/pkg/config" + "github.com/Rain-kl/Wavelet/backend/pkg/config" "github.com/glebarez/sqlite" "go.opentelemetry.io/otel/attribute" "gorm.io/driver/postgres" diff --git a/plugins/infra/database/postgres_logger.go b/backend/plugins/infra/database/postgres_logger.go similarity index 98% rename from plugins/infra/database/postgres_logger.go rename to backend/plugins/infra/database/postgres_logger.go index 61b74666..b14de60f 100644 --- a/plugins/infra/database/postgres_logger.go +++ b/backend/plugins/infra/database/postgres_logger.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" "gorm.io/gorm" gormLogger "gorm.io/gorm/logger" ) diff --git a/plugins/infra/database/postgres_logger_test.go b/backend/plugins/infra/database/postgres_logger_test.go similarity index 100% rename from plugins/infra/database/postgres_logger_test.go rename to backend/plugins/infra/database/postgres_logger_test.go diff --git a/plugins/infra/infra_test.go b/backend/plugins/infra/infra_test.go similarity index 95% rename from plugins/infra/infra_test.go rename to backend/plugins/infra/infra_test.go index c6827b54..fe98b073 100644 --- a/plugins/infra/infra_test.go +++ b/backend/plugins/infra/infra_test.go @@ -19,13 +19,13 @@ import ( "github.com/stretchr/testify/require" "gorm.io/gorm" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/plugins/infra/database" - "github.com/Rain-kl/Wavelet/plugins/infra/logger" - "github.com/Rain-kl/Wavelet/plugins/infra/storage" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/logger" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) type TestUser struct { diff --git a/plugins/infra/logger/plugin.go b/backend/plugins/infra/logger/plugin.go similarity index 95% rename from plugins/infra/logger/plugin.go rename to backend/plugins/infra/logger/plugin.go index e3ab711c..545e26f0 100644 --- a/plugins/infra/logger/plugin.go +++ b/backend/plugins/infra/logger/plugin.go @@ -9,9 +9,9 @@ import ( "fmt" "strings" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/pkg/logger" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/pkg/logger" ) // Plugin implements core.Plugin to provide contracts.LoggerService. diff --git a/plugins/infra/logger/plugin_test.go b/backend/plugins/infra/logger/plugin_test.go similarity index 86% rename from plugins/infra/logger/plugin_test.go rename to backend/plugins/infra/logger/plugin_test.go index 6ac452e2..c23a73b9 100644 --- a/plugins/infra/logger/plugin_test.go +++ b/backend/plugins/infra/logger/plugin_test.go @@ -10,9 +10,9 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/infra/logger" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/logger" ) func TestLoggerPluginOperations(t *testing.T) { diff --git a/plugins/infra/storage/diskcache/cache.go b/backend/plugins/infra/storage/diskcache/cache.go similarity index 95% rename from plugins/infra/storage/diskcache/cache.go rename to backend/plugins/infra/storage/diskcache/cache.go index 7c7b0bca..7c913218 100644 --- a/plugins/infra/storage/diskcache/cache.go +++ b/backend/plugins/infra/storage/diskcache/cache.go @@ -10,8 +10,8 @@ import ( "sync" "time" - pkgcache "github.com/Rain-kl/Wavelet/pkg/cache/disk" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" + pkgcache "github.com/Rain-kl/Wavelet/backend/pkg/cache/disk" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" ) // Status represents the runtime cache statistics. diff --git a/plugins/infra/storage/diskcache/cache_test.go b/backend/plugins/infra/storage/diskcache/cache_test.go similarity index 91% rename from plugins/infra/storage/diskcache/cache_test.go rename to backend/plugins/infra/storage/diskcache/cache_test.go index ac6dba79..a2740ee1 100644 --- a/plugins/infra/storage/diskcache/cache_test.go +++ b/backend/plugins/infra/storage/diskcache/cache_test.go @@ -8,8 +8,8 @@ import ( "os" "testing" - cache "github.com/Rain-kl/Wavelet/plugins/infra/cache" - "github.com/Rain-kl/Wavelet/pkg/testhelper" + "github.com/Rain-kl/Wavelet/backend/pkg/testhelper" + cache "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" ) func TestDiskCacheReloadConfig(t *testing.T) { diff --git a/plugins/infra/storage/objectstore/config.go b/backend/plugins/infra/storage/objectstore/config.go similarity index 99% rename from plugins/infra/storage/objectstore/config.go rename to backend/plugins/infra/storage/objectstore/config.go index 88ef9ca6..3bb9daa2 100644 --- a/plugins/infra/storage/objectstore/config.go +++ b/backend/plugins/infra/storage/objectstore/config.go @@ -12,7 +12,7 @@ import ( "strings" "time" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" "gorm.io/gorm" ) diff --git a/plugins/infra/storage/objectstore/http.go b/backend/plugins/infra/storage/objectstore/http.go similarity index 95% rename from plugins/infra/storage/objectstore/http.go rename to backend/plugins/infra/storage/objectstore/http.go index fe6698e2..b2445f6a 100644 --- a/plugins/infra/storage/objectstore/http.go +++ b/backend/plugins/infra/storage/objectstore/http.go @@ -10,7 +10,7 @@ import ( "net/url" "time" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" ) func getHTTPObject(ctx context.Context, baseURL, key string) (*Object, error) { diff --git a/plugins/infra/storage/objectstore/local.go b/backend/plugins/infra/storage/objectstore/local.go similarity index 100% rename from plugins/infra/storage/objectstore/local.go rename to backend/plugins/infra/storage/objectstore/local.go diff --git a/plugins/infra/storage/objectstore/local_test.go b/backend/plugins/infra/storage/objectstore/local_test.go similarity index 100% rename from plugins/infra/storage/objectstore/local_test.go rename to backend/plugins/infra/storage/objectstore/local_test.go diff --git a/plugins/infra/storage/objectstore/oss.go b/backend/plugins/infra/storage/objectstore/oss.go similarity index 100% rename from plugins/infra/storage/objectstore/oss.go rename to backend/plugins/infra/storage/objectstore/oss.go diff --git a/plugins/infra/storage/objectstore/s3.go b/backend/plugins/infra/storage/objectstore/s3.go similarity index 100% rename from plugins/infra/storage/objectstore/s3.go rename to backend/plugins/infra/storage/objectstore/s3.go diff --git a/plugins/infra/storage/objectstore/storage.go b/backend/plugins/infra/storage/objectstore/storage.go similarity index 96% rename from plugins/infra/storage/objectstore/storage.go rename to backend/plugins/infra/storage/objectstore/storage.go index c2c512f4..c22c3ad5 100644 --- a/plugins/infra/storage/objectstore/storage.go +++ b/backend/plugins/infra/storage/objectstore/storage.go @@ -13,10 +13,10 @@ import ( "sync" "time" - cache "github.com/Rain-kl/Wavelet/plugins/infra/cache" - database "github.com/Rain-kl/Wavelet/plugins/infra/database" + cache "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" + database "github.com/Rain-kl/Wavelet/backend/plugins/infra/database" - "github.com/Rain-kl/Wavelet/pkg/util" + "github.com/Rain-kl/Wavelet/backend/pkg/util" "gorm.io/gorm" ) diff --git a/plugins/infra/storage/objectstore/storage_test.go b/backend/plugins/infra/storage/objectstore/storage_test.go similarity index 98% rename from plugins/infra/storage/objectstore/storage_test.go rename to backend/plugins/infra/storage/objectstore/storage_test.go index 5c919f9e..48894117 100644 --- a/plugins/infra/storage/objectstore/storage_test.go +++ b/backend/plugins/infra/storage/objectstore/storage_test.go @@ -11,7 +11,7 @@ import ( "testing" "time" - cache "github.com/Rain-kl/Wavelet/plugins/infra/cache" + cache "github.com/Rain-kl/Wavelet/backend/plugins/infra/cache" "github.com/alicebob/miniredis/v2" "github.com/redis/go-redis/v9" ) diff --git a/plugins/infra/storage/objectstore/webdav.go b/backend/plugins/infra/storage/objectstore/webdav.go similarity index 98% rename from plugins/infra/storage/objectstore/webdav.go rename to backend/plugins/infra/storage/objectstore/webdav.go index 5d8e3e65..a33c6d13 100644 --- a/plugins/infra/storage/objectstore/webdav.go +++ b/backend/plugins/infra/storage/objectstore/webdav.go @@ -11,7 +11,7 @@ import ( "path" "strings" - "github.com/Rain-kl/Wavelet/pkg/httppool" + "github.com/Rain-kl/Wavelet/backend/pkg/httppool" "github.com/studio-b12/gowebdav" ) diff --git a/plugins/infra/storage/plugin.go b/backend/plugins/infra/storage/plugin.go similarity index 91% rename from plugins/infra/storage/plugin.go rename to backend/plugins/infra/storage/plugin.go index d03d229a..6da3bf8f 100644 --- a/plugins/infra/storage/plugin.go +++ b/backend/plugins/infra/storage/plugin.go @@ -9,11 +9,11 @@ import ( "fmt" "io" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/domain/upload/ingest" - uploadmodels "github.com/Rain-kl/Wavelet/plugins/domain/upload/models" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/ingest" + uploadmodels "github.com/Rain-kl/Wavelet/backend/plugins/domain/upload/models" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) // Option configures the storage plugin. diff --git a/plugins/infra/storage/plugin_test.go b/backend/plugins/infra/storage/plugin_test.go similarity index 91% rename from plugins/infra/storage/plugin_test.go rename to backend/plugins/infra/storage/plugin_test.go index 86d0eadc..68fa9104 100644 --- a/plugins/infra/storage/plugin_test.go +++ b/backend/plugins/infra/storage/plugin_test.go @@ -14,10 +14,10 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" - "github.com/Rain-kl/Wavelet/core" - "github.com/Rain-kl/Wavelet/core/contracts" - "github.com/Rain-kl/Wavelet/plugins/infra/storage" - "github.com/Rain-kl/Wavelet/plugins/infra/storage/objectstore" + "github.com/Rain-kl/Wavelet/backend/core" + "github.com/Rain-kl/Wavelet/backend/core/contracts" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage" + "github.com/Rain-kl/Wavelet/backend/plugins/infra/storage/objectstore" ) type mockStorageBackend struct { diff --git a/docs/WAVELET_WHITE_PAPER.md b/docs/WAVELET_WHITE_PAPER.md index cbf8a5e8..fa99359f 100644 --- a/docs/WAVELET_WHITE_PAPER.md +++ b/docs/WAVELET_WHITE_PAPER.md @@ -127,9 +127,10 @@ Wavelet 是面向未来 5 年生产级云原生与高并发业务中台的 **微 ## 5. 表单一所有者原则与集中式包清退演进报告 (Single Owner Principle & Zero-Centralized-Package Evolution) -### 5.1 彻底根除集中式包 (Zero-Centralized-Package) -在过去的传统单体架构中,集中式的 `internal/model/`、`internal/repository/` 以及 `internal/` 目录往往成为大杂烩,随着团队扩展导致模块边界失控与隐式耦合。在本次 Cordis 架构重构中,我们实施了彻底的物理清退: -- **`internal/` 目录**:**100% 物理清除**。通用的无状态基础库平移至 `pkg/`,所有业务全部下沉至 `plugins/domain/`。 +### 5.1 彻底根除集中式包与建立 backend/ 顶级总包 +在过去的传统单体架构中,集中式的 `internal/model/`、`internal/repository/` 以及 `internal/` 目录往往成为大杂烩,随着团队扩展导致模块边界失控与隐式耦合。在本次 Cordis 架构重构中,我们实施了彻底的物理清退与顶级前后端分包: +- **`backend/` 顶级总包**:汇聚所有 Go 后端代码(`cmd/`、`core/`、`plugins/`、`pkg/`、`main.go`),根目录仅保留顶级功能域。 +- **`internal/` 目录**:**100% 物理清除**。通用的无状态基础库平移至 `backend/pkg/`,所有业务全部下沉至 `backend/plugins/domain/`。 - **`pkg/model/` 目录**:**100% 物理清除**。消灭集中式数据模型。 - **`pkg/repository/` 目录**:**100% 物理清除**。消灭集中式仓储。 - **`pkg/listener/` 目录**:**100% 物理清除**。全面切换至微内核强类型 `EventBus` 广播订阅。 @@ -138,19 +139,19 @@ Wavelet 是面向未来 5 年生产级云原生与高并发业务中台的 **微 | 数据表 | 唯一所有者插件 | 数据结构与仓储位置 | 跨插件交互方式 | | :--- | :--- | :--- | :--- | -| `w_users` | `plugins/domain/user` | `models.go`
`repository.go` | `core/contracts.UserService`
`contracts.UserDTO` | -| `w_auth_sources`
`w_external_accounts`
`w_access_tokens` | `plugins/domain/auth` | `models.go`
`service.go` | `core/contracts.AuthService`
`contracts.AuthRegistry` | -| `w_uploads`
`w_upload_stats` | `plugins/domain/upload` | `models/models.go`
`repository/repository.go` | `core/contracts.StorageService`
`upload.Ingest` 流水线 | -| `w_system_configs`
`w_templates` | `plugins/domain/admin` | `models.go`
`repository.go` | `ctx.Settings()` / `contracts.ConfigService`
Redis Pub/Sub 广播 | -| `w_message_channels`
`w_message_bindings`
`w_message_pairing_codes`
`w_push_events`
`w_push_channels`
`w_push_histories` | `plugins/domain/message_gateway` | `models.go`
`repository.go` | `EventBus` 强类型事件广播订阅 | -| `w_user_access_logs` | `plugins/domain/risk_control` | `logstore/` | `logstore` 门面
ClickHouse PG/SQLite 回落 | -| `w_schedules` | `plugins/drivers/driver_asynq_cron` | `schedule.go` | `ctx.Schedule()` 扩展点 | -| `w_task_executions` | `plugins/drivers/driver_asynq_worker` | `types.go`
`executor.go` | `ctx.Task()` 扩展点 | -| `w_schema_versions` | **系统内部** | `cmd/app.go` sharedStore | 自动管理,不归属于任何插件 | +| `w_users` | `backend/plugins/domain/user` | `models.go`
`repository.go` | `core/contracts.UserService`
`contracts.UserDTO` | +| `w_auth_sources`
`w_external_accounts`
`w_access_tokens` | `backend/plugins/domain/auth` | `models.go`
`service.go` | `core/contracts.AuthService`
`contracts.AuthRegistry` | +| `w_uploads`
`w_upload_stats` | `backend/plugins/domain/upload` | `models/models.go`
`repository/repository.go` | `core/contracts.StorageService`
`upload.Ingest` 流水线 | +| `w_system_configs`
`w_templates` | `backend/plugins/domain/admin` | `models.go`
`repository.go` | `ctx.Settings()` / `contracts.ConfigService`
Redis Pub/Sub 广播 | +| `w_message_channels`
`w_message_bindings`
`w_message_pairing_codes`
`w_push_events`
`w_push_channels`
`w_push_histories` | `backend/plugins/domain/message_gateway` | `models.go`
`repository.go` | `EventBus` 强类型事件广播订阅 | +| `w_user_access_logs` | `backend/plugins/domain/risk_control` | `logstore/` | `logstore` 门面
ClickHouse PG/SQLite 回落 | +| `w_schedules` | `backend/plugins/drivers/driver_asynq_cron` | `schedule.go` | `ctx.Schedule()` 扩展点 | +| `w_task_executions` | `backend/plugins/drivers/driver_asynq_worker` | `types.go`
`executor.go` | `ctx.Task()` 扩展点 | +| `w_schema_versions` | **系统内部** | `backend/cmd/app.go` sharedStore | 自动管理,不归属于任何插件 | ### 5.3 架构防线与单向依赖保障 -1. **测试脚手架绝对解耦**:底层通用的 `pkg/testhelper` 严禁反向引用任何上层业务插件。`testhelper` 维护轻量自包含的测试表脚手架,彻底杜绝包导入循环(Import Cycle)。 +1. **测试脚手架绝对解耦**:底层通用的 `backend/pkg/testhelper` 严禁反向引用任何上层业务插件。`testhelper` 维护轻量自包含的测试表脚手架,彻底杜绝包导入循环(Import Cycle)。 2. **Pub/Sub 并发安全防线**:在启动 Redis Pub/Sub 监听协程前,严格捕获局部客户端实例,彻底消除测试或重启期间对可变全局客户端的数据竞争(Data Race Free)。 -3. **零旁路读写 (No Bypass)**:严禁插件 A 跨界旁路直接操作属于插件 B 的数据表,跨域调用一律面向 `core/contracts` 契约编程或发布事件。 +3. **零旁路读写 (No Bypass)**:严禁插件 A 跨界旁路直接操作属于插件 B 的数据表,跨域调用一律面向 `backend/core/contracts` 契约编程或发布事件。 diff --git a/docs/docs.go b/docs/docs.go index 7aebe93a..b846276c 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -57,7 +57,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse" + "$ref": "#/definitions/cap.ChallengeResponse" } } } @@ -109,7 +109,7 @@ const docTemplate = `{ "type": "object", "properties": { "data": { - "$ref": "#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse" + "$ref": "#/definitions/cap.RedeemResponse" } } } @@ -2156,7 +2156,7 @@ const docTemplate = `{ "data": { "type": "array", "items": { - "$ref": "#/definitions/task.TaskMeta" + "$ref": "#/definitions/driver_asynq_worker.TaskMeta" } } } @@ -4954,6 +4954,49 @@ const docTemplate = `{ } } }, + "cap.ChallengeResponse": { + "type": "object", + "properties": { + "challenge": { + "type": "object", + "properties": { + "c": { + "type": "integer" + }, + "d": { + "type": "integer" + }, + "s": { + "type": "integer" + } + } + }, + "expires": { + "description": "ms timestamp", + "type": "integer" + }, + "token": { + "type": "string" + } + } + }, + "cap.RedeemResponse": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "expires": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "token": { + "type": "string" + } + } + }, "cap.challengeRequest": { "type": "object", "properties": { @@ -5006,45 +5049,67 @@ const docTemplate = `{ } } }, - "github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse": { + "driver_asynq_worker.TaskMeta": { "type": "object", "properties": { - "challenge": { - "type": "object", - "properties": { - "c": { - "type": "integer" - }, - "d": { - "type": "integer" - }, - "s": { - "type": "integer" - } - } + "asynq_task": { + "type": "string" }, - "expires": { - "description": "ms timestamp", + "description": { + "type": "string" + }, + "max_retry": { "type": "integer" }, - "token": { + "name": { + "type": "string" + }, + "params": { + "type": "array", + "items": { + "$ref": "#/definitions/driver_asynq_worker.TaskParam" + } + }, + "queue": { + "type": "string" + }, + "retryable": { + "description": "是否支持手动重试", + "type": "boolean" + }, + "supports_time": { + "type": "boolean" + }, + "type": { "type": "string" } } }, - "github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse": { + "driver_asynq_worker.TaskParam": { "type": "object", "properties": { - "error": { + "description": { + "description": "描述", "type": "string" }, - "expires": { - "type": "integer" + "label": { + "description": "显示名称", + "type": "string" }, - "success": { + "name": { + "description": "参数键名", + "type": "string" + }, + "placeholder": { + "description": "占位符", + "type": "string" + }, + "required": { + "description": "是否必填", "type": "boolean" }, - "token": { + "type": { + "description": "类型:string, text, number, boolean", "type": "string" } } @@ -5470,71 +5535,6 @@ const docTemplate = `{ "example": "" } } - }, - "task.TaskMeta": { - "type": "object", - "properties": { - "asynq_task": { - "type": "string" - }, - "description": { - "type": "string" - }, - "max_retry": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "params": { - "type": "array", - "items": { - "$ref": "#/definitions/task.TaskParam" - } - }, - "queue": { - "type": "string" - }, - "retryable": { - "description": "是否支持手动重试", - "type": "boolean" - }, - "supports_time": { - "type": "boolean" - }, - "type": { - "type": "string" - } - } - }, - "task.TaskParam": { - "type": "object", - "properties": { - "description": { - "description": "描述", - "type": "string" - }, - "label": { - "description": "显示名称", - "type": "string" - }, - "name": { - "description": "参数键名", - "type": "string" - }, - "placeholder": { - "description": "占位符", - "type": "string" - }, - "required": { - "description": "是否必填", - "type": "boolean" - }, - "type": { - "description": "类型:string, text, number, boolean", - "type": "string" - } - } } }, "securityDefinitions": { diff --git a/docs/swagger.json b/docs/swagger.json index 58f4df54..8c15c183 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -50,7 +50,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse" + "$ref": "#/definitions/cap.ChallengeResponse" } } } @@ -102,7 +102,7 @@ "type": "object", "properties": { "data": { - "$ref": "#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse" + "$ref": "#/definitions/cap.RedeemResponse" } } } @@ -2149,7 +2149,7 @@ "data": { "type": "array", "items": { - "$ref": "#/definitions/task.TaskMeta" + "$ref": "#/definitions/driver_asynq_worker.TaskMeta" } } } @@ -4947,6 +4947,49 @@ } } }, + "cap.ChallengeResponse": { + "type": "object", + "properties": { + "challenge": { + "type": "object", + "properties": { + "c": { + "type": "integer" + }, + "d": { + "type": "integer" + }, + "s": { + "type": "integer" + } + } + }, + "expires": { + "description": "ms timestamp", + "type": "integer" + }, + "token": { + "type": "string" + } + } + }, + "cap.RedeemResponse": { + "type": "object", + "properties": { + "error": { + "type": "string" + }, + "expires": { + "type": "integer" + }, + "success": { + "type": "boolean" + }, + "token": { + "type": "string" + } + } + }, "cap.challengeRequest": { "type": "object", "properties": { @@ -4999,45 +5042,67 @@ } } }, - "github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse": { + "driver_asynq_worker.TaskMeta": { "type": "object", "properties": { - "challenge": { - "type": "object", - "properties": { - "c": { - "type": "integer" - }, - "d": { - "type": "integer" - }, - "s": { - "type": "integer" - } - } + "asynq_task": { + "type": "string" }, - "expires": { - "description": "ms timestamp", + "description": { + "type": "string" + }, + "max_retry": { "type": "integer" }, - "token": { + "name": { + "type": "string" + }, + "params": { + "type": "array", + "items": { + "$ref": "#/definitions/driver_asynq_worker.TaskParam" + } + }, + "queue": { + "type": "string" + }, + "retryable": { + "description": "是否支持手动重试", + "type": "boolean" + }, + "supports_time": { + "type": "boolean" + }, + "type": { "type": "string" } } }, - "github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse": { + "driver_asynq_worker.TaskParam": { "type": "object", "properties": { - "error": { + "description": { + "description": "描述", "type": "string" }, - "expires": { - "type": "integer" + "label": { + "description": "显示名称", + "type": "string" }, - "success": { + "name": { + "description": "参数键名", + "type": "string" + }, + "placeholder": { + "description": "占位符", + "type": "string" + }, + "required": { + "description": "是否必填", "type": "boolean" }, - "token": { + "type": { + "description": "类型:string, text, number, boolean", "type": "string" } } @@ -5463,71 +5528,6 @@ "example": "" } } - }, - "task.TaskMeta": { - "type": "object", - "properties": { - "asynq_task": { - "type": "string" - }, - "description": { - "type": "string" - }, - "max_retry": { - "type": "integer" - }, - "name": { - "type": "string" - }, - "params": { - "type": "array", - "items": { - "$ref": "#/definitions/task.TaskParam" - } - }, - "queue": { - "type": "string" - }, - "retryable": { - "description": "是否支持手动重试", - "type": "boolean" - }, - "supports_time": { - "type": "boolean" - }, - "type": { - "type": "string" - } - } - }, - "task.TaskParam": { - "type": "object", - "properties": { - "description": { - "description": "描述", - "type": "string" - }, - "label": { - "description": "显示名称", - "type": "string" - }, - "name": { - "description": "参数键名", - "type": "string" - }, - "placeholder": { - "description": "占位符", - "type": "string" - }, - "required": { - "description": "是否必填", - "type": "boolean" - }, - "type": { - "description": "类型:string, text, number, boolean", - "type": "string" - } - } } }, "securityDefinitions": { diff --git a/docs/swagger.yaml b/docs/swagger.yaml index f9880bba..08e92312 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -628,6 +628,34 @@ definitions: website: type: string type: object + cap.ChallengeResponse: + properties: + challenge: + properties: + c: + type: integer + d: + type: integer + s: + type: integer + type: object + expires: + description: ms timestamp + type: integer + token: + type: string + type: object + cap.RedeemResponse: + properties: + error: + type: string + expires: + type: integer + success: + type: boolean + token: + type: string + type: object cap.challengeRequest: properties: scope: @@ -662,32 +690,49 @@ definitions: ttl_minutes: type: integer type: object - github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse: + driver_asynq_worker.TaskMeta: properties: - challenge: - properties: - c: - type: integer - d: - type: integer - s: - type: integer - type: object - expires: - description: ms timestamp + asynq_task: + type: string + description: + type: string + max_retry: type: integer - token: + name: + type: string + params: + items: + $ref: '#/definitions/driver_asynq_worker.TaskParam' + type: array + queue: + type: string + retryable: + description: 是否支持手动重试 + type: boolean + supports_time: + type: boolean + type: type: string type: object - github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse: + driver_asynq_worker.TaskParam: properties: - error: + description: + description: 描述 type: string - expires: - type: integer - success: + label: + description: 显示名称 + type: string + name: + description: 参数键名 + type: string + placeholder: + description: 占位符 + type: string + required: + description: 是否必填 type: boolean - token: + type: + description: 类型:string, text, number, boolean type: string type: object handler.batchDownloadRequest: @@ -973,51 +1018,6 @@ definitions: example: "" type: string type: object - task.TaskMeta: - properties: - asynq_task: - type: string - description: - type: string - max_retry: - type: integer - name: - type: string - params: - items: - $ref: '#/definitions/task.TaskParam' - type: array - queue: - type: string - retryable: - description: 是否支持手动重试 - type: boolean - supports_time: - type: boolean - type: - type: string - type: object - task.TaskParam: - properties: - description: - description: 描述 - type: string - label: - description: 显示名称 - type: string - name: - description: 参数键名 - type: string - placeholder: - description: 占位符 - type: string - required: - description: 是否必填 - type: boolean - type: - description: 类型:string, text, number, boolean - type: string - type: object info: contact: name: Wavelet @@ -1050,7 +1050,7 @@ paths: - $ref: '#/definitions/response.Any' - properties: data: - $ref: '#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.ChallengeResponse' + $ref: '#/definitions/cap.ChallengeResponse' type: object "500": description: 内部服务错误 @@ -1081,7 +1081,7 @@ paths: - $ref: '#/definitions/response.Any' - properties: data: - $ref: '#/definitions/github_com_Rain-kl_Wavelet_plugins_domain_cap.RedeemResponse' + $ref: '#/definitions/cap.RedeemResponse' type: object "400": description: 参数错误或核销失败 @@ -2305,7 +2305,7 @@ paths: - properties: data: items: - $ref: '#/definitions/task.TaskMeta' + $ref: '#/definitions/driver_asynq_worker.TaskMeta' type: array type: object "401": diff --git a/scripts/swagger.sh b/scripts/swagger.sh index 0fab43ff..9821d9ab 100755 --- a/scripts/swagger.sh +++ b/scripts/swagger.sh @@ -3,4 +3,4 @@ # execute this first # go install github.com/swaggo/swag/cmd/swag@latest -swag init -o docs --parseDependency --parseInternal --exclude fast-note-sync-service-source +swag init --dir backend/ -o docs --parseDependency --parseInternal --exclude fast-note-sync-service-source