├── .github └── workflows │ └── main.yml ├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── assets ├── class_diagram.png ├── cover.png ├── hexagonal.png └── system_design.png ├── go.mod ├── go.sum ├── internal ├── adapters │ ├── cache │ │ └── redis.go │ ├── functions │ │ ├── delete │ │ │ └── main.go │ │ ├── generate │ │ │ └── main.go │ │ ├── notification │ │ │ └── main.go │ │ ├── redirect │ │ │ └── main.go │ │ └── stats │ │ │ └── main.go │ ├── handlers │ │ ├── delete.go │ │ ├── generate.go │ │ ├── helpers.go │ │ ├── redirect.go │ │ ├── slack.go │ │ └── stats.go │ └── repository │ │ ├── link.go │ │ └── stats.go ├── config │ └── config.go ├── core │ ├── domain │ │ ├── link.go │ │ └── stats.go │ ├── ports │ │ ├── cache.go │ │ ├── link.go │ │ └── statistics.go │ └── services │ │ ├── link.go │ │ └── stats.go └── tests │ ├── benchmark │ └── link_benchmark_test.go │ ├── mock │ ├── data.go │ ├── mock_cache.go │ ├── mock_link.go │ └── mock_stats.go │ └── unit │ ├── generate_link_test.go │ ├── helpers.go │ ├── redirect_link_test.go │ ├── slack_test.go │ └── stats_test.go └── template.yaml /.github/workflows/main.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/.github/workflows/main.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/.gitignore -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/README.md -------------------------------------------------------------------------------- /assets/class_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/assets/class_diagram.png -------------------------------------------------------------------------------- /assets/cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/assets/cover.png -------------------------------------------------------------------------------- /assets/hexagonal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/assets/hexagonal.png -------------------------------------------------------------------------------- /assets/system_design.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/assets/system_design.png -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/go.sum -------------------------------------------------------------------------------- /internal/adapters/cache/redis.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/cache/redis.go -------------------------------------------------------------------------------- /internal/adapters/functions/delete/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/functions/delete/main.go -------------------------------------------------------------------------------- /internal/adapters/functions/generate/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/functions/generate/main.go -------------------------------------------------------------------------------- /internal/adapters/functions/notification/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/functions/notification/main.go -------------------------------------------------------------------------------- /internal/adapters/functions/redirect/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/functions/redirect/main.go -------------------------------------------------------------------------------- /internal/adapters/functions/stats/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/functions/stats/main.go -------------------------------------------------------------------------------- /internal/adapters/handlers/delete.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/delete.go -------------------------------------------------------------------------------- /internal/adapters/handlers/generate.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/generate.go -------------------------------------------------------------------------------- /internal/adapters/handlers/helpers.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/helpers.go -------------------------------------------------------------------------------- /internal/adapters/handlers/redirect.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/redirect.go -------------------------------------------------------------------------------- /internal/adapters/handlers/slack.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/slack.go -------------------------------------------------------------------------------- /internal/adapters/handlers/stats.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/handlers/stats.go -------------------------------------------------------------------------------- /internal/adapters/repository/link.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/repository/link.go -------------------------------------------------------------------------------- /internal/adapters/repository/stats.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/adapters/repository/stats.go -------------------------------------------------------------------------------- /internal/config/config.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/config/config.go -------------------------------------------------------------------------------- /internal/core/domain/link.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/domain/link.go -------------------------------------------------------------------------------- /internal/core/domain/stats.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/domain/stats.go -------------------------------------------------------------------------------- /internal/core/ports/cache.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/ports/cache.go -------------------------------------------------------------------------------- /internal/core/ports/link.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/ports/link.go -------------------------------------------------------------------------------- /internal/core/ports/statistics.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/ports/statistics.go -------------------------------------------------------------------------------- /internal/core/services/link.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/services/link.go -------------------------------------------------------------------------------- /internal/core/services/stats.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/core/services/stats.go -------------------------------------------------------------------------------- /internal/tests/benchmark/link_benchmark_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/benchmark/link_benchmark_test.go -------------------------------------------------------------------------------- /internal/tests/mock/data.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/mock/data.go -------------------------------------------------------------------------------- /internal/tests/mock/mock_cache.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/mock/mock_cache.go -------------------------------------------------------------------------------- /internal/tests/mock/mock_link.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/mock/mock_link.go -------------------------------------------------------------------------------- /internal/tests/mock/mock_stats.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/mock/mock_stats.go -------------------------------------------------------------------------------- /internal/tests/unit/generate_link_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/unit/generate_link_test.go -------------------------------------------------------------------------------- /internal/tests/unit/helpers.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/unit/helpers.go -------------------------------------------------------------------------------- /internal/tests/unit/redirect_link_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/unit/redirect_link_test.go -------------------------------------------------------------------------------- /internal/tests/unit/slack_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/unit/slack_test.go -------------------------------------------------------------------------------- /internal/tests/unit/stats_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/internal/tests/unit/stats_test.go -------------------------------------------------------------------------------- /template.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Furkan-Gulsen/golang-url-shortener/HEAD/template.yaml --------------------------------------------------------------------------------