├── .github └── workflows │ ├── ci.yml │ └── spring-app-advisor.yaml ├── .gitignore ├── .mvn ├── jvm.config └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── .spring-app-advisor.yml ├── Dockerfile ├── LICENSE ├── README.md ├── deploy ├── codeengine │ └── README.md ├── fly │ ├── README.md │ ├── fly.toml │ └── spring-boot-dashboard.json ├── k8s │ ├── README.md │ ├── blog-db.yaml │ ├── deployment.yaml │ ├── ingress.yaml │ ├── kservice.yaml │ └── service.yaml ├── postgresql │ └── README.md └── tap │ ├── README.md │ ├── blog-db.yaml │ ├── workload-jvm.yaml │ ├── workload-native.yaml │ └── workload-source2url.yaml ├── docker-compose.yml ├── docker └── otel-collector.yaml ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main ├── java │ ├── am │ │ └── ik │ │ │ └── blog │ │ │ ├── BlogApiApplication.java │ │ │ ├── admin │ │ │ └── web │ │ │ │ ├── EntryImportController.java │ │ │ │ └── InfoController.java │ │ │ ├── category │ │ │ ├── Category.java │ │ │ ├── CategoryMapper.java │ │ │ └── web │ │ │ │ └── CategoryRestController.java │ │ │ ├── config │ │ │ ├── CorsProps.java │ │ │ ├── GitHubConfig.java │ │ │ ├── MicrometerConfig.java │ │ │ ├── MyBatisThymeleafConfig.java │ │ │ ├── NativeHints.java │ │ │ ├── OpenApiConfig.java │ │ │ ├── OtelConfig.java │ │ │ ├── ResilienceConfig.java │ │ │ ├── SanitizingFunctionImpl.java │ │ │ ├── SecurityConfig.java │ │ │ ├── SystemConfig.java │ │ │ ├── UriFilter.java │ │ │ └── WebConfig.java │ │ │ ├── entry │ │ │ ├── Author.java │ │ │ ├── AuthorizedEntryService.java │ │ │ ├── Entry.java │ │ │ ├── EntryBuilder.java │ │ │ ├── EntryMapper.java │ │ │ ├── EntryService.java │ │ │ ├── FrontMatter.java │ │ │ ├── FrontMatterBuilder.java │ │ │ ├── keyword │ │ │ │ ├── KeywordExtractor.java │ │ │ │ ├── KeywordParser.java │ │ │ │ ├── QueryParser.java │ │ │ │ └── SimpleKeywordExtractor.java │ │ │ ├── search │ │ │ │ └── SearchCriteria.java │ │ │ └── web │ │ │ │ ├── EntryGraphqlController.java │ │ │ │ ├── EntryRequest.java │ │ │ │ └── EntryRestController.java │ │ │ ├── github │ │ │ ├── Commit.java │ │ │ ├── CommitParameter.java │ │ │ ├── Committer.java │ │ │ ├── EntryFetcher.java │ │ │ ├── File.java │ │ │ ├── GitCommit.java │ │ │ ├── GitCommitter.java │ │ │ ├── GitHubClient.java │ │ │ ├── GitHubProps.java │ │ │ ├── GitHubUserContentClient.java │ │ │ ├── Parent.java │ │ │ ├── Tree.java │ │ │ └── web │ │ │ │ └── WebhookController.java │ │ │ ├── problem │ │ │ └── ProblemControllerAdvice.java │ │ │ ├── proto │ │ │ └── ProtoUtils.java │ │ │ ├── security │ │ │ ├── Authorized.java │ │ │ ├── CompositeUserDetailsService.java │ │ │ └── Privilege.java │ │ │ ├── tag │ │ │ ├── Tag.java │ │ │ ├── TagAndCount.java │ │ │ ├── TagMapper.java │ │ │ └── web │ │ │ │ └── TagRestController.java │ │ │ ├── tenant │ │ │ ├── AbstractTenantAuthorizationManager.java │ │ │ ├── MethodInvocationTenantAuthorizationManager.java │ │ │ ├── RequestTenantAuthorizationManager.java │ │ │ ├── TenantUserDetails.java │ │ │ ├── TenantUserDetailsService.java │ │ │ └── TenantUserProps.java │ │ │ └── util │ │ │ ├── FileLoader.java │ │ │ ├── Tuple2.java │ │ │ ├── Tuple3.java │ │ │ └── Tuples.java │ └── org │ │ └── flywaydb │ │ └── core │ │ └── internal │ │ └── reports │ │ └── json │ │ ├── InfoResultDeserializer.java │ │ └── MigrateResultDeserializer.java ├── proto │ └── am │ │ └── ik │ │ └── blog │ │ └── proto │ │ └── blog.proto └── resources │ ├── META-INF │ └── native-image │ │ └── reflect-config.json │ ├── am │ └── ik │ │ └── blog │ │ ├── category │ │ └── CategoryMapper │ │ │ └── findAll.sql │ │ ├── entry │ │ └── EntryMapper │ │ │ ├── count.sql │ │ │ ├── deleteEntry.sql │ │ │ ├── entryIds.sql │ │ │ ├── findAll.sql │ │ │ ├── findAllCursorNext.sql │ │ │ ├── findOne.sql │ │ │ ├── nextId.sql │ │ │ └── upsertEntry.sql │ │ └── tag │ │ └── TagMapper │ │ └── findOrderByTagNameAsc.sql │ ├── application-otel.properties │ ├── application.properties │ ├── db │ └── migration │ │ ├── V1.0__init.sql │ │ ├── V2.0__use_gin_index_for_categories.sql │ │ ├── V2.1__use_gin_index_for_tags.sql │ │ ├── V2.2__drop_tag.sql │ │ ├── V3.0__add_keywords_column_to_entry_table.sql │ │ ├── V4.0__add_tenant.sql │ │ ├── V5.0__add_tags_as_jsonb.sql │ │ ├── V5.1__replace_array_tags_to_json.sql │ │ ├── V5.2__drop_tags_json.sql │ │ ├── V5.3__make_tags_notnull.sql │ │ └── V6.0__enable_pg_trgm.sql │ ├── graphql │ └── schema.graphqls │ └── static │ ├── favicon.ico │ └── robots.txt └── test ├── java └── am │ └── ik │ └── blog │ ├── MockConfig.java │ ├── TestContainersConfig.java │ ├── admin │ └── web │ │ └── EntryImportControllerTest.java │ ├── category │ ├── CategoryMapperIntegrationTest.java │ └── web │ │ └── CategoryRestControllerTest.java │ ├── entry │ ├── EntryMapperIntegrationTest.java │ ├── EntryServiceTest.java │ ├── SqlTest.java │ ├── keyword │ │ └── KeywordParserTest.java │ └── web │ │ ├── Asserts.java │ │ ├── EntryGraphqlControllerTest.java │ │ ├── EntryRestControllerIntegrationTest.java │ │ └── EntryRestControllerTest.java │ ├── github │ ├── EntryFetcherTest.java │ ├── Fixtures.java │ └── web │ │ └── WebhookControllerTest.java │ ├── tag │ ├── TagMapperIntegrationTest.java │ └── web │ │ └── TagRestControllerTest.java │ └── tenant │ └── TenantUserDetailsTest.java └── resources ├── application-default.properties ├── github ├── sample-commits-response.json └── sample-content-response.json ├── graphql-test ├── getEntriesWithOnlyEntryIdAndTitleAndCursor.graphql └── getEntry.graphql ├── logback-test.xml └── sql ├── delete-test-data.sql ├── insert-empty-tag-entry.sql ├── insert-test-data.sql └── update-test-data-for-search.sql /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/spring-app-advisor.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.github/workflows/spring-app-advisor.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.gitignore -------------------------------------------------------------------------------- /.mvn/jvm.config: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.mvn/jvm.config -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/.mvn/wrapper/maven-wrapper.properties -------------------------------------------------------------------------------- /.spring-app-advisor.yml: -------------------------------------------------------------------------------- 1 | enabled: true 2 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/Dockerfile -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/README.md -------------------------------------------------------------------------------- /deploy/codeengine/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/codeengine/README.md -------------------------------------------------------------------------------- /deploy/fly/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/fly/README.md -------------------------------------------------------------------------------- /deploy/fly/fly.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/fly/fly.toml -------------------------------------------------------------------------------- /deploy/fly/spring-boot-dashboard.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/fly/spring-boot-dashboard.json -------------------------------------------------------------------------------- /deploy/k8s/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/README.md -------------------------------------------------------------------------------- /deploy/k8s/blog-db.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/blog-db.yaml -------------------------------------------------------------------------------- /deploy/k8s/deployment.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/deployment.yaml -------------------------------------------------------------------------------- /deploy/k8s/ingress.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/ingress.yaml -------------------------------------------------------------------------------- /deploy/k8s/kservice.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/kservice.yaml -------------------------------------------------------------------------------- /deploy/k8s/service.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/k8s/service.yaml -------------------------------------------------------------------------------- /deploy/postgresql/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/postgresql/README.md -------------------------------------------------------------------------------- /deploy/tap/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/tap/README.md -------------------------------------------------------------------------------- /deploy/tap/blog-db.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/tap/blog-db.yaml -------------------------------------------------------------------------------- /deploy/tap/workload-jvm.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/tap/workload-jvm.yaml -------------------------------------------------------------------------------- /deploy/tap/workload-native.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/tap/workload-native.yaml -------------------------------------------------------------------------------- /deploy/tap/workload-source2url.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/deploy/tap/workload-source2url.yaml -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/docker-compose.yml -------------------------------------------------------------------------------- /docker/otel-collector.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/docker/otel-collector.yaml -------------------------------------------------------------------------------- /mvnw: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/mvnw -------------------------------------------------------------------------------- /mvnw.cmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/mvnw.cmd -------------------------------------------------------------------------------- /pom.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/pom.xml -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/BlogApiApplication.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/BlogApiApplication.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/admin/web/EntryImportController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/admin/web/EntryImportController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/admin/web/InfoController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/admin/web/InfoController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/category/Category.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/category/Category.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/category/CategoryMapper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/category/CategoryMapper.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/category/web/CategoryRestController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/category/web/CategoryRestController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/CorsProps.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/CorsProps.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/GitHubConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/GitHubConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/MicrometerConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/MicrometerConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/MyBatisThymeleafConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/MyBatisThymeleafConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/NativeHints.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/NativeHints.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/OpenApiConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/OpenApiConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/OtelConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/OtelConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/ResilienceConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/ResilienceConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/SanitizingFunctionImpl.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/SanitizingFunctionImpl.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/SecurityConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/SecurityConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/SystemConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/SystemConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/UriFilter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/UriFilter.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/config/WebConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/config/WebConfig.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/Author.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/Author.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/AuthorizedEntryService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/AuthorizedEntryService.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/Entry.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/Entry.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/EntryBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/EntryBuilder.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/EntryMapper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/EntryMapper.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/EntryService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/EntryService.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/FrontMatter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/FrontMatter.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/FrontMatterBuilder.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/FrontMatterBuilder.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/keyword/KeywordExtractor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/keyword/KeywordExtractor.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/keyword/KeywordParser.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/keyword/KeywordParser.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/keyword/QueryParser.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/keyword/QueryParser.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/keyword/SimpleKeywordExtractor.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/keyword/SimpleKeywordExtractor.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/search/SearchCriteria.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/search/SearchCriteria.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/web/EntryGraphqlController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/web/EntryGraphqlController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/web/EntryRequest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/web/EntryRequest.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/entry/web/EntryRestController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/entry/web/EntryRestController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/Commit.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/Commit.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/CommitParameter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/CommitParameter.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/Committer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/Committer.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/EntryFetcher.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/EntryFetcher.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/File.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/File.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/GitCommit.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/GitCommit.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/GitCommitter.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/GitCommitter.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/GitHubClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/GitHubClient.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/GitHubProps.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/GitHubProps.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/GitHubUserContentClient.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/GitHubUserContentClient.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/Parent.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/Parent.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/Tree.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/Tree.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/github/web/WebhookController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/github/web/WebhookController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/problem/ProblemControllerAdvice.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/problem/ProblemControllerAdvice.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/proto/ProtoUtils.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/proto/ProtoUtils.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/security/Authorized.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/security/Authorized.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/security/CompositeUserDetailsService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/security/CompositeUserDetailsService.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/security/Privilege.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/security/Privilege.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tag/Tag.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tag/Tag.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tag/TagAndCount.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tag/TagAndCount.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tag/TagMapper.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tag/TagMapper.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tag/web/TagRestController.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tag/web/TagRestController.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/AbstractTenantAuthorizationManager.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/AbstractTenantAuthorizationManager.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/MethodInvocationTenantAuthorizationManager.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/MethodInvocationTenantAuthorizationManager.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/RequestTenantAuthorizationManager.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/RequestTenantAuthorizationManager.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/TenantUserDetails.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/TenantUserDetails.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/TenantUserDetailsService.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/TenantUserDetailsService.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/tenant/TenantUserProps.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/tenant/TenantUserProps.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/util/FileLoader.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/util/FileLoader.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/util/Tuple2.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/util/Tuple2.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/util/Tuple3.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/util/Tuple3.java -------------------------------------------------------------------------------- /src/main/java/am/ik/blog/util/Tuples.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/am/ik/blog/util/Tuples.java -------------------------------------------------------------------------------- /src/main/java/org/flywaydb/core/internal/reports/json/InfoResultDeserializer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/org/flywaydb/core/internal/reports/json/InfoResultDeserializer.java -------------------------------------------------------------------------------- /src/main/java/org/flywaydb/core/internal/reports/json/MigrateResultDeserializer.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/java/org/flywaydb/core/internal/reports/json/MigrateResultDeserializer.java -------------------------------------------------------------------------------- /src/main/proto/am/ik/blog/proto/blog.proto: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/proto/am/ik/blog/proto/blog.proto -------------------------------------------------------------------------------- /src/main/resources/META-INF/native-image/reflect-config.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/META-INF/native-image/reflect-config.json -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/category/CategoryMapper/findAll.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/category/CategoryMapper/findAll.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/count.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/count.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/deleteEntry.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/deleteEntry.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/entryIds.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/entryIds.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/findAll.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/findAll.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/findAllCursorNext.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/findAllCursorNext.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/findOne.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/findOne.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/nextId.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/nextId.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/entry/EntryMapper/upsertEntry.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/entry/EntryMapper/upsertEntry.sql -------------------------------------------------------------------------------- /src/main/resources/am/ik/blog/tag/TagMapper/findOrderByTagNameAsc.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/am/ik/blog/tag/TagMapper/findOrderByTagNameAsc.sql -------------------------------------------------------------------------------- /src/main/resources/application-otel.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/application-otel.properties -------------------------------------------------------------------------------- /src/main/resources/application.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/application.properties -------------------------------------------------------------------------------- /src/main/resources/db/migration/V1.0__init.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V1.0__init.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V2.0__use_gin_index_for_categories.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V2.0__use_gin_index_for_categories.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V2.1__use_gin_index_for_tags.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V2.1__use_gin_index_for_tags.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V2.2__drop_tag.sql: -------------------------------------------------------------------------------- 1 | DROP TABLE tag; -------------------------------------------------------------------------------- /src/main/resources/db/migration/V3.0__add_keywords_column_to_entry_table.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V3.0__add_keywords_column_to_entry_table.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V4.0__add_tenant.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V4.0__add_tenant.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V5.0__add_tags_as_jsonb.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V5.0__add_tags_as_jsonb.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V5.1__replace_array_tags_to_json.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V5.1__replace_array_tags_to_json.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V5.2__drop_tags_json.sql: -------------------------------------------------------------------------------- 1 | ALTER TABLE entry 2 | DROP COLUMN IF EXISTS tags_json; -------------------------------------------------------------------------------- /src/main/resources/db/migration/V5.3__make_tags_notnull.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V5.3__make_tags_notnull.sql -------------------------------------------------------------------------------- /src/main/resources/db/migration/V6.0__enable_pg_trgm.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/db/migration/V6.0__enable_pg_trgm.sql -------------------------------------------------------------------------------- /src/main/resources/graphql/schema.graphqls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/graphql/schema.graphqls -------------------------------------------------------------------------------- /src/main/resources/static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/main/resources/static/favicon.ico -------------------------------------------------------------------------------- /src/main/resources/static/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: / -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/MockConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/MockConfig.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/TestContainersConfig.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/TestContainersConfig.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/admin/web/EntryImportControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/admin/web/EntryImportControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/category/CategoryMapperIntegrationTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/category/CategoryMapperIntegrationTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/category/web/CategoryRestControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/category/web/CategoryRestControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/EntryMapperIntegrationTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/EntryMapperIntegrationTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/EntryServiceTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/EntryServiceTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/SqlTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/SqlTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/keyword/KeywordParserTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/keyword/KeywordParserTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/web/Asserts.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/web/Asserts.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/web/EntryGraphqlControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/web/EntryGraphqlControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/web/EntryRestControllerIntegrationTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/web/EntryRestControllerIntegrationTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/entry/web/EntryRestControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/entry/web/EntryRestControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/github/EntryFetcherTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/github/EntryFetcherTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/github/Fixtures.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/github/Fixtures.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/github/web/WebhookControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/github/web/WebhookControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/tag/TagMapperIntegrationTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/tag/TagMapperIntegrationTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/tag/web/TagRestControllerTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/tag/web/TagRestControllerTest.java -------------------------------------------------------------------------------- /src/test/java/am/ik/blog/tenant/TenantUserDetailsTest.java: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/java/am/ik/blog/tenant/TenantUserDetailsTest.java -------------------------------------------------------------------------------- /src/test/resources/application-default.properties: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/application-default.properties -------------------------------------------------------------------------------- /src/test/resources/github/sample-commits-response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/github/sample-commits-response.json -------------------------------------------------------------------------------- /src/test/resources/github/sample-content-response.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/github/sample-content-response.json -------------------------------------------------------------------------------- /src/test/resources/graphql-test/getEntriesWithOnlyEntryIdAndTitleAndCursor.graphql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/graphql-test/getEntriesWithOnlyEntryIdAndTitleAndCursor.graphql -------------------------------------------------------------------------------- /src/test/resources/graphql-test/getEntry.graphql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/graphql-test/getEntry.graphql -------------------------------------------------------------------------------- /src/test/resources/logback-test.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/logback-test.xml -------------------------------------------------------------------------------- /src/test/resources/sql/delete-test-data.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/sql/delete-test-data.sql -------------------------------------------------------------------------------- /src/test/resources/sql/insert-empty-tag-entry.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/sql/insert-empty-tag-entry.sql -------------------------------------------------------------------------------- /src/test/resources/sql/insert-test-data.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/sql/insert-test-data.sql -------------------------------------------------------------------------------- /src/test/resources/sql/update-test-data-for-search.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/categolj/blog-api/HEAD/src/test/resources/sql/update-test-data-for-search.sql --------------------------------------------------------------------------------