diff --git a/README.md b/README.md index 1cda2a2..31c6e7c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Build Check Runner](https://git.anthrove.art/Anthrove/otter-space-sdk/v5/actions/workflows/build_check.yaml/badge.svg) +![Build Check Runner](https://git.anthrove.art/Anthrove/otter-space-sdk/v6/actions/workflows/build_check.yaml/badge.svg) [![Bugs](https://sonarqube.dragse.de/api/project_badges/measure?project=Anthrove---OtterSpace-SDK&metric=bugs&token=sqb_96012ffdd64ce721d7f9c82bfa77aa27a5c1fd38)](https://sonarqube.dragse.de/dashboard?id=Anthrove---OtterSpace-SDK) [![Code Smells](https://sonarqube.dragse.de/api/project_badges/measure?project=Anthrove---OtterSpace-SDK&metric=code_smells&token=sqb_96012ffdd64ce721d7f9c82bfa77aa27a5c1fd38)](https://sonarqube.dragse.de/dashboard?id=Anthrove---OtterSpace-SDK) [![Coverage](https://sonarqube.dragse.de/api/project_badges/measure?project=Anthrove---OtterSpace-SDK&metric=coverage&token=sqb_96012ffdd64ce721d7f9c82bfa77aa27a5c1fd38)](https://sonarqube.dragse.de/dashboard?id=Anthrove---OtterSpace-SDK) @@ -22,7 +22,7 @@ The OtterSpace SDK is a Go package for interacting with the OtterSpace API. It p To install the OtterSpace SDK, you can use `go get`: ```shell -go get git.anthrove.art/Anthrove/otter-space-sdk/v5 +go get git.anthrove.art/Anthrove/otter-space-sdk/v6 ```` ## Usage @@ -34,8 +34,8 @@ package main import ( "context" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/database" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/database" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" ) func main() { diff --git a/go.mod b/go.mod index 209f89d..13fcdb3 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module git.anthrove.art/Anthrove/otter-space-sdk/v5 +module git.anthrove.art/Anthrove/otter-space-sdk/v6 go 1.22.0 @@ -6,28 +6,28 @@ require ( github.com/davecgh/go-spew v1.1.1 github.com/lib/pq v1.10.9 github.com/matoous/go-nanoid/v2 v2.1.0 - github.com/rubenv/sql-migrate v1.7.0 + github.com/rubenv/sql-migrate v1.7.1 github.com/sirupsen/logrus v1.9.3 - github.com/testcontainers/testcontainers-go v0.33.0 - github.com/testcontainers/testcontainers-go/modules/postgres v0.33.0 - go.opentelemetry.io/contrib/bridges/otellogrus v0.5.0 - go.opentelemetry.io/otel v1.31.0 - go.opentelemetry.io/otel/trace v1.31.0 - gorm.io/driver/postgres v1.5.9 + github.com/testcontainers/testcontainers-go v0.35.0 + github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 + go.opentelemetry.io/contrib/bridges/otellogrus v0.9.0 + go.opentelemetry.io/otel v1.34.0 + go.opentelemetry.io/otel/trace v1.34.0 + gorm.io/driver/postgres v1.5.11 gorm.io/gorm v1.25.12 ) require ( dario.cat/mergo v1.0.1 // indirect github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect - github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 // indirect + github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect github.com/distribution/reference v0.6.0 // indirect - github.com/docker/docker v27.3.1+incompatible // indirect + github.com/docker/docker v27.5.1+incompatible // indirect github.com/docker/go-connections v0.5.0 // indirect github.com/docker/go-units v0.5.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect @@ -39,38 +39,41 @@ require ( github.com/google/uuid v1.6.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect - github.com/jackc/pgx/v5 v5.7.1 // indirect + github.com/jackc/pgx/v5 v5.7.2 // indirect github.com/jackc/puddle/v2 v2.2.2 // indirect github.com/jinzhu/inflection v1.0.0 // indirect github.com/jinzhu/now v1.1.5 // indirect github.com/klauspost/compress v1.17.11 // indirect github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 // indirect - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/moby/docker-image-spec v1.3.1 // indirect github.com/moby/patternmatcher v0.6.0 // indirect github.com/moby/sys/sequential v0.6.0 // indirect github.com/moby/sys/user v0.3.0 // indirect github.com/moby/sys/userns v0.1.0 // indirect - github.com/moby/term v0.5.0 // indirect + github.com/moby/term v0.5.2 // indirect github.com/morikuni/aec v1.0.0 // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0 // indirect github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 // indirect - github.com/rogpeppe/go-internal v1.10.0 // indirect github.com/shirou/gopsutil/v3 v3.24.5 // indirect github.com/shoenig/go-m1cpu v0.1.6 // indirect + github.com/stretchr/testify v1.10.0 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.9.0 // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect - go.opentelemetry.io/otel/log v0.7.0 // indirect - go.opentelemetry.io/otel/metric v1.31.0 // indirect + go.opentelemetry.io/otel/log v0.10.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect go.opentelemetry.io/otel/sdk v1.28.0 // indirect - golang.org/x/crypto v0.28.0 // indirect - golang.org/x/sync v0.8.0 // indirect - golang.org/x/sys v0.26.0 // indirect - golang.org/x/text v0.19.0 // indirect + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/sync v0.10.0 // indirect + golang.org/x/sys v0.29.0 // indirect + golang.org/x/text v0.21.0 // indirect golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 7cd2b70..69493cd 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,8 @@ dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s= dario.cat/mergo v1.0.1/go.mod h1:uNxQE+84aUszobStD9th8a29P2fMDhsBdgRYvZOxGmk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161 h1:L/gRVlceqvL25UVaW/CKtUDjefjrs0SPonmDGUVOYP0= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg= +github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -21,8 +21,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= -github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= -github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker v27.5.1+incompatible h1:4PYU5dnBYqRQi0294d1FBECqT9ECWeQAIfE8q4YnPY8= +github.com/docker/docker v27.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= @@ -53,8 +53,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 h1:iCEnooe7UlwOQYpKFhBabPMi4aNAfoODPEFNiAnClxo= github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= -github.com/jackc/pgx/v5 v5.7.1 h1:x7SYsPBYDkHDksogeSmZZ5xzThcTgRz++I5E+ePFUcs= -github.com/jackc/pgx/v5 v5.7.1/go.mod h1:e7O26IywZZ+naJtWWos6i6fvWK+29etgITqrqHLfoZA= +github.com/jackc/pgx/v5 v5.7.2 h1:mLoDLV6sonKlvjIEsV56SkWNCnuNv531l94GaIzO+XI= +github.com/jackc/pgx/v5 v5.7.2/go.mod h1:ncY89UGWxg82EykZUwSpUKEfccBGGYq1xjrOpsbsfGQ= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -73,12 +73,14 @@ github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683/go.mod h1:ilwx/Dta8jXAgpFYFvSWEMwxmbWXyiUHkd5FwyKhb5k= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= +github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/matoous/go-nanoid/v2 v2.1.0 h1:P64+dmq21hhWdtvZfEAofnvJULaRR1Yib0+PnU669bE= github.com/matoous/go-nanoid/v2 v2.1.0/go.mod h1:KlbGNQ+FhrUNIHUxZdL63t7tl4LaPkZNpUULS8H4uVM= github.com/mattn/go-sqlite3 v1.14.19 h1:fhGleo2h1p8tVChob4I9HpmVFIAkKGpiukdrgQbWfGI= github.com/mattn/go-sqlite3 v1.14.19/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= +github.com/mdelapenya/tlscert v0.1.0 h1:YTpF579PYUX475eOL+6zyEO3ngLTOUWck78NBuJVXaM= +github.com/mdelapenya/tlscert v0.1.0/go.mod h1:wrbyM/DwbFCeCeqdPX/8c6hNOqQgbf0rUDErE1uD+64= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= @@ -89,8 +91,8 @@ github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= github.com/moby/sys/userns v0.1.0/go.mod h1:IHUYgu/kao6N8YZlp9Cf444ySSvCmDlmzUcYfDHOl28= -github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= +github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ= +github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -105,10 +107,10 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/poy/onpar v1.1.2 h1:QaNrNiZx0+Nar5dLgTVp5mXkyoVFIbepjyEoGSnhbAY= github.com/poy/onpar v1.1.2/go.mod h1:6X8FLNoxyr9kkmnlqpK6LSoiOtrO6MICtWwEuWkLjzg= -github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= -github.com/rogpeppe/go-internal v1.10.0/go.mod h1:UQnix2H7Ngw/k4C5ijL5+65zddjncjaFoBhdsK/akog= -github.com/rubenv/sql-migrate v1.7.0 h1:HtQq1xyTN2ISmQDggnh0c9U3JlP8apWh8YO2jzlXpTI= -github.com/rubenv/sql-migrate v1.7.0/go.mod h1:S4wtDEG1CKn+0ShpTtzWhFpHHI5PvCUtiGI+C+Z2THE= +github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= +github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= +github.com/rubenv/sql-migrate v1.7.1 h1:f/o0WgfO/GqNuVg+6801K/KW3WdDSupzSjDYODmiUq4= +github.com/rubenv/sql-migrate v1.7.1/go.mod h1:Ob2Psprc0/3ggbM6wCzyYVFFuc6FyZrb2AS+ezLDFb4= github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -118,14 +120,16 @@ github.com/shoenig/test v0.6.4/go.mod h1:byHiCGXqrVaflBLAMq/srcZIHynQPQgeyvkvXnj github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/testcontainers/testcontainers-go v0.33.0 h1:zJS9PfXYT5O0ZFXM2xxXfk4J5UMw/kRiISng037Gxdw= -github.com/testcontainers/testcontainers-go v0.33.0/go.mod h1:W80YpTa8D5C3Yy16icheD01UTDu+LmXIA2Keo+jWtT8= -github.com/testcontainers/testcontainers-go/modules/postgres v0.33.0 h1:c+Gt+XLJjqFAejgX4hSpnHIpC9eAhvgI/TFWL/PbrFI= -github.com/testcontainers/testcontainers-go/modules/postgres v0.33.0/go.mod h1:I4DazHBoWDyf69ByOIyt3OdNjefiUx372459txOpQ3o= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/testcontainers/testcontainers-go v0.35.0 h1:uADsZpTKFAtp8SLK+hMwSaa+X+JiERHtd4sQAFmXeMo= +github.com/testcontainers/testcontainers-go v0.35.0/go.mod h1:oEVBj5zrfJTrgjwONs1SsRbnBtH9OKl+IGl3UMcr2B4= +github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0 h1:eEGx9kYzZb2cNhRbBrNOCL/YPOM7+RMJiy3bB+ie0/I= +github.com/testcontainers/testcontainers-go/modules/postgres v0.35.0/go.mod h1:hfH71Mia/WWLBgMD2YctYcMlfsbnT0hflweL1dy8Q4s= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= @@ -134,31 +138,33 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -go.opentelemetry.io/contrib/bridges/otellogrus v0.5.0 h1:T9cxTlfBz5go7dFWejO5E4JfeglWgWL1MRTPq9p8da0= -go.opentelemetry.io/contrib/bridges/otellogrus v0.5.0/go.mod h1:f6xZHPJ3A+RFc3Lfz4SoGIpfmVr4PEF4XM1H3fl+6/4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0 h1:ZIg3ZT/aQ7AfKqdwp7ECpOK6vHqquXXuyTjIO8ZdmPs= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.55.0/go.mod h1:DQAwmETtZV00skUwgD6+0U89g80NKsJE3DCKeLLPQMI= -go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= -go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/bridges/otellogrus v0.9.0 h1:8WlIPjiMRU8Pg86+JoBjdzXOKp9bWt2M9qiVbjjFUsg= +go.opentelemetry.io/contrib/bridges/otellogrus v0.9.0/go.mod h1:bkQ7eZh+3ruXMBGR2UfReI0EjxtkcsjsmQKJTh1N2Is= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= -go.opentelemetry.io/otel/log v0.7.0 h1:d1abJc0b1QQZADKvfe9JqqrfmPYQCz2tUSO+0XZmuV4= -go.opentelemetry.io/otel/log v0.7.0/go.mod h1:2jf2z7uVfnzDNknKTO9G+ahcOAyWcp1fJmk/wJjULRo= -go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= -go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= +go.opentelemetry.io/otel/log v0.10.0 h1:1CXmspaRITvFcjA4kyVszuG4HjA61fPDxMb7q3BuyF0= +go.opentelemetry.io/otel/log v0.10.0/go.mod h1:PbVdm9bXKku/gL0oFfUF4wwsQsOPlpo4VEqjvxih+FM= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= go.opentelemetry.io/otel/sdk v1.28.0 h1:b9d7hIry8yZsgtbmM0DKyPWMMUMlK9NEKuIG4aBqWyE= go.opentelemetry.io/otel/sdk v1.28.0/go.mod h1:oYj7ClPUA7Iw3m+r7GeEjz0qckQRJK2B8zjcZEfu7Pg= -go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys= -go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lIVU/I= go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.28.0 h1:GBDwsMXVQi34v5CCYUm2jkJvu4cbtru2U4TN2PSyQnw= -golang.org/x/crypto v0.28.0/go.mod h1:rmgy+3RHxRZMyY0jjAJShp2zgEdOqj2AO7U0pYmeQ7U= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= @@ -170,8 +176,8 @@ golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= -golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -180,14 +186,14 @@ golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo= -golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.25.0 h1:WtHI/ltw4NvSUig5KARz9h521QvRC8RmF/cuYqifU24= -golang.org/x/term v0.25.0/go.mod h1:RPyXicDX+6vLxogjjRxjgD2TKtmAO6NZBsBRfrOLu7M= +golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= +golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.28.0 h1:/Ts8HFuMR2E6IP/jlo7QVLZHggjKQbhu/7H0LJFr3Gg= +golang.org/x/term v0.28.0/go.mod h1:Sw/lC2IAUZ92udQNf3WodGtn4k/XoLyZoh8v/8uiwek= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM= -golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 h1:vVKdlvoWBphwdxWKrFZEuM0kGgGLxUOYcY4U/2Vjg44= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -212,8 +218,8 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gorm.io/driver/postgres v1.5.9 h1:DkegyItji119OlcaLjqN11kHoUgZ/j13E0jkJZgD6A8= -gorm.io/driver/postgres v1.5.9/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= +gorm.io/driver/postgres v1.5.11 h1:ubBVAfbKEUld/twyKZ0IYn9rSQh448EdelLYk9Mv314= +gorm.io/driver/postgres v1.5.11/go.mod h1:DX3GReXH+3FPWGrrgffdvCk3DQ1dwDPdmbenSkweRGI= gorm.io/gorm v1.25.12 h1:I0u8i2hWQItBq1WfE0o2+WuL9+8L21K9e2HHSTE/0f8= gorm.io/gorm v1.25.12/go.mod h1:xh7N7RHfYlNc5EmcI/El95gXusucDrQnHXe0+CgWcLQ= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= diff --git a/pkg/database/client.go b/pkg/database/client.go index caf1ad2..bff4446 100644 --- a/pkg/database/client.go +++ b/pkg/database/client.go @@ -5,9 +5,9 @@ import ( "embed" "fmt" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" migrate "github.com/rubenv/sql-migrate" log "github.com/sirupsen/logrus" "go.opentelemetry.io/contrib/bridges/otellogrus" @@ -17,7 +17,7 @@ import ( "gorm.io/gorm" ) -const tracingName = "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/database" +const tracingName = "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/database" var ( //go:embed migrations/*.sql diff --git a/pkg/database/client_test.go b/pkg/database/client_test.go index 886dfa9..de5fb71 100644 --- a/pkg/database/client_test.go +++ b/pkg/database/client_test.go @@ -4,8 +4,8 @@ import ( "context" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/favorite.go b/pkg/database/favorite.go index d50682a..e21fe97 100644 --- a/pkg/database/favorite.go +++ b/pkg/database/favorite.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/favorite_test.go b/pkg/database/favorite_test.go index dd47ddc..4291fc8 100644 --- a/pkg/database/favorite_test.go +++ b/pkg/database/favorite_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/migrations/001_inital_database.sql b/pkg/database/migrations/001_inital_database.sql index 68749d7..3812a71 100644 --- a/pkg/database/migrations/001_inital_database.sql +++ b/pkg/database/migrations/001_inital_database.sql @@ -14,9 +14,39 @@ CREATE TYPE TagType AS ENUM ( 'lore', 'meta', 'invalid', - 'copyright' + 'copyright', + 'Contributor', + 'Unknown' ); +CREATE TYPE ReportType AS ENUM ( + 'duplicate', + 'missing_data', + 'rating_abuse', + 'illegal_content' + ); + +CREATE TYPE ReportState AS ENUM ( + 'pending_unclaimed', + 'pending', + 'approved', + 'partial', + 'rejected' + ); + +CREATE TYPE pool_category AS ENUM ( + 'series', + 'collection' + ); + +CREATE TABLE "User" +( + id TEXT PRIMARY KEY, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE NULL +); + CREATE TABLE "Post" ( id CHAR(25) PRIMARY KEY, @@ -29,35 +59,20 @@ CREATE TABLE "Post" CREATE TABLE "Source" ( id CHAR(25) PRIMARY KEY, - display_name TEXT NULL, - icon TEXT NULL, - domain TEXT NOT NULL UNIQUE, + display_name TEXT NULL, + icon TEXT NULL, + domain TEXT NOT NULL UNIQUE, + enabled BOOL DEFAULT FALSE, + meta JSON DEFAULT '{}', created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP WITH TIME ZONE NULL ); -CREATE TABLE "Tag" -( - name TEXT PRIMARY KEY, - tag_type TagType, - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE NULL -); - -CREATE TABLE "User" -( - id TEXT PRIMARY KEY, - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE NULL -); - CREATE TABLE "PostReference" ( - post_id TEXT REFERENCES "Post" (id), - source_id TEXT REFERENCES "Source" (id), + post_id CHAR(25) REFERENCES "Post" (id), + source_id CHAR(25) REFERENCES "Source" (id), url TEXT NOT NULL, full_file_url TEXT, preview_file_url TEXT, @@ -66,33 +81,46 @@ CREATE TABLE "PostReference" PRIMARY KEY (post_id, source_id, url) ); +CREATE TABLE "Tag" +( + id SERIAL PRIMARY KEY, + name TEXT UNIQUE, + tag_type TagType, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE NULL +); + + CREATE TABLE "TagAlias" ( - name TEXT PRIMARY KEY, - tag_id TEXT REFERENCES "Tag" (name), + id SERIAL PRIMARY KEY, + name TEXT UNIQUE, + tag_id INT REFERENCES "Tag" (id), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE "TagGroup" ( - name TEXT PRIMARY KEY, - tag_id TEXT REFERENCES "Tag" (name), + id SERIAL PRIMARY KEY, + name TEXT UNIQUE, + tag_id INT REFERENCES "Tag" (id), created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE "UserSource" ( - id CHAR(25) PRIMARY KEY, - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE NULL NULL, - user_id TEXT REFERENCES "User" (id), + id CHAR(25) PRIMARY KEY, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE NULL NULL, + user_id CHAR(25) REFERENCES "User" (id), source_id TEXT REFERENCES "Source" (id), scrape_time_interval TEXT, account_username TEXT, account_id TEXT, last_scrape_time TIMESTAMP WITH TIME ZONE, - account_validate BOOL DEFAULT FALSE, + account_validate BOOL DEFAULT FALSE, account_validation_key CHAR(25), UNIQUE (source_id, account_username, account_id) ); @@ -104,13 +132,69 @@ CREATE TABLE "UserFavorites" updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP WITH TIME ZONE NULL NULL, user_id TEXT REFERENCES "User" (id), - post_id TEXT REFERENCES "Post" (id), + post_id CHAR(25) REFERENCES "Post" (id), user_source_id CHAR(25) REFERENCES "UserSource" (id) ); +CREATE INDEX idx_user_post_deleted ON "UserFavorites"(user_id, deleted_at); +CREATE INDEX idx_created_at ON "UserFavorites"(created_at); + CREATE TABLE "post_tags" ( - post_id TEXT REFERENCES "Post" (id), - tag_name TEXT REFERENCES "Tag" (name), - PRIMARY KEY (post_id, tag_name) + post_id CHAR(25) REFERENCES "Post" (id), + tag_id INT REFERENCES "Tag" (id), + PRIMARY KEY (post_id, tag_id) +); + + +CREATE TABLE "Pool" +( + id CHAR(25) PRIMARY KEY, + name TEXT, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP NULL, + category POOL_CATEGORY NOT NULL +); + +CREATE TABLE "PoolPost" +( + pool_id CHAR(25) REFERENCES "Pool" (id), + post_id CHAR(25) REFERENCES "Post" (id), + order_position INT NOT NULL DEFAULT 0, + PRIMARY KEY (pool_id, post_id) +); + +CREATE TABLE "PoolReference" +( + pool_id CHAR(25) REFERENCES "Pool" (id), + source_id CHAR(25) REFERENCES "Source" (id), + url TEXT NOT NULL, + PRIMARY KEY (pool_id, source_id, url) +); + +CREATE TABLE "ScrapeHistory" +( + id CHAR(25) PRIMARY KEY, + user_source_id CHAR(25) NOT NULL REFERENCES "UserSource" (id), + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + finished_at TIMESTAMP NULL, + error TEXT NULL, + added_posts INT NOT NULL, + deleted_posts INT NOT NULL +); + +CREATE TABLE "PostReport" +( + id CHAR(25) NOT NULL PRIMARY KEY, + created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, + deleted_at TIMESTAMP WITH TIME ZONE NULL, + post_id CHAR(25) NOT NULL REFERENCES "Post" (id), + report_by TEXT NOT NULL REFERENCES "User" (id), + report_description TEXT NOT NULL, + audit_by TEXT NULL REFERENCES "User" (id), + audit_description TEXT NOT NULL, + report_type ReportType NOT NULL, + report_state ReportState NOT NULL ); \ No newline at end of file diff --git a/pkg/database/migrations/002_indexes.sql b/pkg/database/migrations/002_indexes.sql deleted file mode 100644 index 491e632..0000000 --- a/pkg/database/migrations/002_indexes.sql +++ /dev/null @@ -1,3 +0,0 @@ --- +migrate Up -CREATE INDEX idx_user_post_deleted ON "UserFavorites"(user_id, deleted_at); -CREATE INDEX idx_created_at ON "UserFavorites"(created_at); \ No newline at end of file diff --git a/pkg/database/migrations/003_pools.sql b/pkg/database/migrations/003_pools.sql deleted file mode 100644 index 2f77be8..0000000 --- a/pkg/database/migrations/003_pools.sql +++ /dev/null @@ -1,28 +0,0 @@ --- +migrate Up -CREATE TYPE pool_category AS ENUM ('series', 'collection'); - -CREATE TABLE "Pool" -( - id CHAR(25) PRIMARY KEY, - name VARCHAR(75), - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP NULL, - category POOL_CATEGORY NOT NULL -); - -CREATE TABLE "PoolPost" -( - pool_id CHAR(25) REFERENCES "Pool" (id), - post_id CHAR(25) REFERENCES "Post" (id), - order_position INT NOT NULL DEFAULT 0, - PRIMARY KEY (pool_id, post_id) -); - -CREATE TABLE "PoolReference" -( - pool_id CHAR(25) REFERENCES "Pool" (id), - source_id CHAR(25) REFERENCES "Source" (id), - url TEXT NOT NULL, - PRIMARY KEY (pool_id, source_id, url) -); \ No newline at end of file diff --git a/pkg/database/migrations/004_scrape_history.sql b/pkg/database/migrations/004_scrape_history.sql deleted file mode 100644 index 5ae010b..0000000 --- a/pkg/database/migrations/004_scrape_history.sql +++ /dev/null @@ -1,11 +0,0 @@ --- +migrate Up -CREATE TABLE "ScrapeHistory" -( - scrape_task_id CHAR(25) PRIMARY KEY, - user_source_id CHAR(25) NOT NULL REFERENCES "UserSource" (id), - created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, - finished_at TIMESTAMP NULL, - error TEXT NULL, - added_posts INT NOT NULL, - deleted_posts INT NOT NULL -); \ No newline at end of file diff --git a/pkg/database/migrations/005_id_fixes.sql b/pkg/database/migrations/005_id_fixes.sql deleted file mode 100644 index 9184935..0000000 --- a/pkg/database/migrations/005_id_fixes.sql +++ /dev/null @@ -1,13 +0,0 @@ --- +migrate Up -ALTER TABLE "PostReference" - ALTER COLUMN post_id TYPE CHAR(25), - ALTER COLUMN source_id TYPE CHAR(25); - -ALTER TABLE post_tags - ALTER COLUMN post_id TYPE CHAR(25); - -ALTER TABLE "UserFavorites" - ALTER COLUMN post_id TYPE CHAR(25); - -ALTER TABLE "UserSource" - ALTER COLUMN source_id TYPE CHAR(25); diff --git a/pkg/database/migrations/006_post_reports.sql b/pkg/database/migrations/006_post_reports.sql deleted file mode 100644 index 94a24d7..0000000 --- a/pkg/database/migrations/006_post_reports.sql +++ /dev/null @@ -1,30 +0,0 @@ --- +migrate Up -CREATE TYPE ReportType AS ENUM ( - 'duplicate', - 'missing_data', - 'rating_abuse', - 'illegal_content' - ); - -CREATE TYPE ReportState AS ENUM ( - 'pending_unclaimed', - 'pending', - 'approved', - 'partial', - 'rejected' - ); - -CREATE TABLE "PostReport" -( - id CHAR(25) NOT NULL PRIMARY KEY, - created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, - deleted_at TIMESTAMP WITH TIME ZONE NULL, - post_id CHAR(25) NOT NULL REFERENCES "Post" (id), - report_by TEXT NOT NULL REFERENCES "User" (id), - report_description TEXT NOT NULL, - audit_by TEXT NULL REFERENCES "User" (id), - audit_description TEXT NOT NULL, - report_type ReportType NOT NULL, - report_state ReportState NOT NULL -); \ No newline at end of file diff --git a/pkg/database/migrations/007_additional_tag_types.sql b/pkg/database/migrations/007_additional_tag_types.sql deleted file mode 100644 index 5703f41..0000000 --- a/pkg/database/migrations/007_additional_tag_types.sql +++ /dev/null @@ -1,4 +0,0 @@ --- +migrate Up - -ALTER TYPE TagType ADD VALUE 'Contributor'; -ALTER TYPE TagType ADD VALUE 'Unknown'; diff --git a/pkg/database/migrations/008_pool_name_change.sql b/pkg/database/migrations/008_pool_name_change.sql deleted file mode 100644 index d9683cd..0000000 --- a/pkg/database/migrations/008_pool_name_change.sql +++ /dev/null @@ -1,5 +0,0 @@ --- +migrate Up - -ALTER TABLE "Pool" -ALTER -COLUMN name TYPE TEXT; \ No newline at end of file diff --git a/pkg/database/migrations/009_source_model_enhancements.sql b/pkg/database/migrations/009_source_model_enhancements.sql deleted file mode 100644 index f799982..0000000 --- a/pkg/database/migrations/009_source_model_enhancements.sql +++ /dev/null @@ -1,5 +0,0 @@ --- +migrate Up - -ALTER TABLE "Source" - ADD COLUMN enabled BOOL DEFAULT FALSE, - ADD COLUMN meta JSON DEFAULT '{}'; diff --git a/pkg/database/pool.go b/pkg/database/pool.go index d54b744..8c5b3fe 100644 --- a/pkg/database/pool.go +++ b/pkg/database/pool.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/pool_post.go b/pkg/database/pool_post.go index cb3fd54..4378690 100644 --- a/pkg/database/pool_post.go +++ b/pkg/database/pool_post.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/pool_post_test.go b/pkg/database/pool_post_test.go index 88bc209..32e2b39 100644 --- a/pkg/database/pool_post_test.go +++ b/pkg/database/pool_post_test.go @@ -6,8 +6,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) diff --git a/pkg/database/pool_reference.go b/pkg/database/pool_reference.go index 471fbf5..9c418c2 100644 --- a/pkg/database/pool_reference.go +++ b/pkg/database/pool_reference.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/pool_reference_test.go b/pkg/database/pool_reference_test.go index 0a4529a..a781f41 100644 --- a/pkg/database/pool_reference_test.go +++ b/pkg/database/pool_reference_test.go @@ -6,8 +6,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) diff --git a/pkg/database/pool_test.go b/pkg/database/pool_test.go index f03bf7f..4346f7c 100644 --- a/pkg/database/pool_test.go +++ b/pkg/database/pool_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/post.go b/pkg/database/post.go index 9bee6c1..fb4ddc0 100644 --- a/pkg/database/post.go +++ b/pkg/database/post.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/post_report.go b/pkg/database/post_report.go index 0ef8503..dceb894 100644 --- a/pkg/database/post_report.go +++ b/pkg/database/post_report.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/post_report_test.go b/pkg/database/post_report_test.go index 837bdc4..9b4619e 100644 --- a/pkg/database/post_report_test.go +++ b/pkg/database/post_report_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/post_test.go b/pkg/database/post_test.go index 8b40364..41b6159 100644 --- a/pkg/database/post_test.go +++ b/pkg/database/post_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/scopes.go b/pkg/database/scopes.go index 48f3d4f..ff8373c 100644 --- a/pkg/database/scopes.go +++ b/pkg/database/scopes.go @@ -3,7 +3,7 @@ package database import ( "math" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" "gorm.io/gorm" ) diff --git a/pkg/database/scopes_test.go b/pkg/database/scopes_test.go index 67e6849..9d10117 100644 --- a/pkg/database/scopes_test.go +++ b/pkg/database/scopes_test.go @@ -5,8 +5,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" @@ -34,7 +34,7 @@ func TestPaginate(t *testing.T) { // -- Create Tags to test with validTags := test.GenerateRandomTags(500) - err = CreateTagInBatch(ctx, validTags, len(validTags)) + _, err = CreateTagInBatch(ctx, validTags, len(validTags)) if err != nil { logger.Fatalf("Could not create tags: %v", err) } @@ -149,7 +149,7 @@ func TestAdvancedPagination(t *testing.T) { Type: models.General, }, } - err = CreateTagInBatch(ctx, validTags, len(validTags)) + _, err = CreateTagInBatch(ctx, validTags, len(validTags)) if err != nil { logger.Fatalf("Could not create tags: %v", err) } @@ -275,7 +275,7 @@ func TestOrderBy(t *testing.T) { Type: models.General, }, } - err = CreateTagInBatch(ctx, validTags, len(validTags)) + _, err = CreateTagInBatch(ctx, validTags, len(validTags)) if err != nil { logger.Fatalf("Could not create tags: %v", err) } diff --git a/pkg/database/scrape_history.go b/pkg/database/scrape_history.go index 293884a..59b47e0 100644 --- a/pkg/database/scrape_history.go +++ b/pkg/database/scrape_history.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" @@ -17,12 +17,12 @@ func CreateScrapeHistory(ctx context.Context, scrapeHistory models.ScrapeHistory defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "scrape_task_id": scrapeHistory.ScrapeTaskID, + "id": scrapeHistory.ID, "user_source_id": scrapeHistory.UserSourceID, }) span.SetAttributes( - attribute.String("scrape_task_id", string(scrapeHistory.ScrapeTaskID)), + attribute.String("id", string(scrapeHistory.ID)), attribute.String("user_source_id", string(scrapeHistory.UserSourceID)), ) @@ -32,11 +32,11 @@ func CreateScrapeHistory(ctx context.Context, scrapeHistory models.ScrapeHistory return models.ScrapeHistory{}, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) } - if len(scrapeHistory.ScrapeTaskID) == 0 { + if len(scrapeHistory.ID) == 0 { return models.ScrapeHistory{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsEmpty}) } - if len(scrapeHistory.ScrapeTaskID) != 25 { + if len(scrapeHistory.ID) != 25 { return models.ScrapeHistory{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsWrongLength}) } @@ -65,11 +65,11 @@ func GetScrapeHistoryByID(ctx context.Context, id models.ScrapeTaskID) (models.S defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "scrape_task_id": id, + "id": id, }) span.SetAttributes( - attribute.String("scrape_task_id", string(id)), + attribute.String("id", string(id)), ) utils.HandleEvent(span, localLogger, "Starting get scrapeHistory by ID") @@ -84,7 +84,7 @@ func GetScrapeHistoryByID(ctx context.Context, id models.ScrapeTaskID) (models.S return models.ScrapeHistory{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsWrongLength}) } - result := client.WithContext(ctx).First(&post, "scrape_task_id = ?", id) + result := client.WithContext(ctx).First(&post, "id = ?", id) if result.Error != nil { if errors.Is(result.Error, gorm.ErrRecordNotFound) { return models.ScrapeHistory{}, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.NoDataFound}) @@ -107,25 +107,25 @@ func UpdateScrapeHistory(ctx context.Context, scrapeHistory models.ScrapeHistory defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "scrape_task_id": scrapeHistory.ScrapeTaskID, + "id": scrapeHistory.ID, }) span.SetAttributes( - attribute.String("scrape_task_id", string(scrapeHistory.ScrapeTaskID)), + attribute.String("id", string(scrapeHistory.ID)), ) utils.HandleEvent(span, localLogger, "Starting scrapeHistory update") - if len(scrapeHistory.ScrapeTaskID) == 0 { + if len(scrapeHistory.ID) == 0 { return utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsEmpty}) } - if len(scrapeHistory.ScrapeTaskID) != 25 { + if len(scrapeHistory.ID) != 25 { return utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsWrongLength}) } updateScrapeHistory := models.ScrapeHistory{ - ScrapeTaskID: scrapeHistory.ScrapeTaskID, + ID: scrapeHistory.ID, UserSourceID: scrapeHistory.UserSourceID, FinishedAt: scrapeHistory.FinishedAt, Error: scrapeHistory.Error, @@ -150,11 +150,11 @@ func DeleteScrapeHistory(ctx context.Context, id models.ScrapeTaskID) error { defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "scrape_task_id": id, + "id": id, }) span.SetAttributes( - attribute.String("scrape_task_id", string(id)), + attribute.String("id", string(id)), ) utils.HandleEvent(span, localLogger, "Starting delete scrapeHistory") @@ -169,7 +169,7 @@ func DeleteScrapeHistory(ctx context.Context, id models.ScrapeTaskID) error { return utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.ScrapeTaskIDIsWrongLength}) } - result := client.WithContext(ctx).Delete(&scrapeHistory, "scrape_task_id = ?", id) + result := client.WithContext(ctx).Delete(&scrapeHistory, "id = ?", id) if result.Error != nil { if errors.Is(result.Error, gorm.ErrRecordNotFound) { return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.NoDataFound}) diff --git a/pkg/database/scrape_history_test.go b/pkg/database/scrape_history_test.go index 07d5344..218de77 100644 --- a/pkg/database/scrape_history_test.go +++ b/pkg/database/scrape_history_test.go @@ -6,8 +6,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" @@ -81,7 +81,7 @@ func TestCreateScrapeHistory(t *testing.T) { } validScrapeHistory := models.ScrapeHistory{ - ScrapeTaskID: "000000000000valid_task_id", + ID: "000000000000valid_task_id", UserSourceID: validUSerSource.ID, } @@ -181,7 +181,7 @@ func TestGetScrapeHistoryByID(t *testing.T) { } validScrapeHistory := models.ScrapeHistory{ - ScrapeTaskID: "000000000000valid_task_id", + ID: "000000000000valid_task_id", UserSourceID: validUSerSource.ID, } @@ -279,7 +279,7 @@ func TestUpdateScrapeHistory(t *testing.T) { } validScrapeHistory := models.ScrapeHistory{ - ScrapeTaskID: "000000000000valid_task_id", + ID: "000000000000valid_task_id", UserSourceID: validUSerSource.ID, } @@ -299,7 +299,7 @@ func TestUpdateScrapeHistory(t *testing.T) { wantErr bool }{ {"Valid Update", updatedScrapeHistory, false}, - {"Empty ID", models.ScrapeHistory{ScrapeTaskID: ""}, true}, + {"Empty ID", models.ScrapeHistory{ID: ""}, true}, } for _, tt := range tests { @@ -380,7 +380,7 @@ func TestDeleteScrapeHistory(t *testing.T) { } validScrapeHistory := models.ScrapeHistory{ - ScrapeTaskID: "000000000000valid_task_id", + ID: "000000000000valid_task_id", UserSourceID: validUSerSource.ID, } diff --git a/pkg/database/source.go b/pkg/database/source.go index 2a44bbe..04c4c1b 100644 --- a/pkg/database/source.go +++ b/pkg/database/source.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/source_test.go b/pkg/database/source_test.go index 6d865fa..54bfec4 100644 --- a/pkg/database/source_test.go +++ b/pkg/database/source_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/tag.go b/pkg/database/tag.go index 849a043..d6c6fc4 100644 --- a/pkg/database/tag.go +++ b/pkg/database/tag.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" @@ -57,7 +57,7 @@ func CreateTag(ctx context.Context, tagName models.TagName, tagType models.TagTy return tag, nil } -func CreateTagInBatch(ctx context.Context, tags []models.Tag, batchSize int) error { +func CreateTagInBatch(ctx context.Context, tags []models.Tag, batchSize int) ([]models.Tag, error) { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "CreateTagInBatch") defer span.End() @@ -74,39 +74,39 @@ func CreateTagInBatch(ctx context.Context, tags []models.Tag, batchSize int) err utils.HandleEvent(span, localLogger, "Starting batch tag creation") if client == nil { - return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) + return nil, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) } if tags == nil || len(tags) == 0 { - return utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagListIsEmpty}) + return nil, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagListIsEmpty}) } if batchSize == 0 { - return utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.BatchSizeIsEmpty}) + return nil, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.BatchSizeIsEmpty}) } result := client.WithContext(ctx).CreateInBatches(&tags, batchSize) if result.Error != nil { if errors.Is(result.Error, gorm.ErrDuplicatedKey) { - return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DuplicateKey}) + return nil, utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DuplicateKey}) } - return utils.HandleError(ctx, span, localLogger, result.Error) + return nil, utils.HandleError(ctx, span, localLogger, result.Error) } utils.HandleEvent(span, localLogger, "Batch tags created successfully") - return nil + return tags, nil } -func DeleteTag(ctx context.Context, tagName models.TagName) error { +func DeleteTag(ctx context.Context, tagID models.TagID) error { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "DeleteTag") defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "tag_name": tagName, + "tag_id": tagID, }) span.SetAttributes( - attribute.String("tag_name", string(tagName)), + attribute.Int64("tag_id", int64(tagID)), ) utils.HandleEvent(span, localLogger, "Starting tag deletion") @@ -117,11 +117,7 @@ func DeleteTag(ctx context.Context, tagName models.TagName) error { return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) } - if len(tagName) == 0 { - return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.TagAliasNameIsEmpty}) - } - - result := client.WithContext(ctx).Delete(&tag, tagName) + result := client.WithContext(ctx).Delete(&tag, tagID) if result.Error != nil { if errors.Is(result.Error, gorm.ErrRecordNotFound) { return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.NoDataFound}) diff --git a/pkg/database/tagAlias.go b/pkg/database/tagAlias.go index f69379a..e2288e0 100644 --- a/pkg/database/tagAlias.go +++ b/pkg/database/tagAlias.go @@ -4,26 +4,26 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" ) -func CreateTagAlias(ctx context.Context, tagAliasName models.TagAliasName, tagName models.TagName) (models.TagAlias, error) { +func CreateTagAlias(ctx context.Context, tagAliasName models.TagAliasName, tagID models.TagID) (models.TagAlias, error) { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "CreateTagAlias") defer span.End() localLogger = localLogger.WithFields(log.Fields{ "tag_alias_name": tagAliasName, - "tag_name": tagName, + "tag_id": tagID, }) span.SetAttributes( attribute.String("tag_alias_name", string(tagAliasName)), - attribute.String("tag_name", string(tagName)), + attribute.Int64("tag_id", int64(tagID)), ) utils.HandleEvent(span, localLogger, "Starting tag alias creation") @@ -36,13 +36,9 @@ func CreateTagAlias(ctx context.Context, tagAliasName models.TagAliasName, tagNa return models.TagAlias{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagAliasNameIsEmpty}) } - if tagName == "" { - return models.TagAlias{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagNameIsEmpty}) - } - tagAlias := models.TagAlias{ Name: tagAliasName, - TagID: tagName, + TagID: tagID, } result := client.WithContext(ctx).Create(&tagAlias) @@ -97,16 +93,16 @@ func CreateTagAliasInBatch(ctx context.Context, tagsAliases []models.TagAlias, b return nil } -func DeleteTagAlias(ctx context.Context, tagAliasName models.TagAliasName) error { +func DeleteTagAlias(ctx context.Context, tagAliasID models.TagAliasID) error { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "DeleteTagAlias") defer span.End() localLogger = localLogger.WithFields(log.Fields{ - "tag_alias_name": tagAliasName, + "tag_alias_id": tagAliasID, }) span.SetAttributes( - attribute.String("tag_alias_name", string(tagAliasName)), + attribute.Int64("tag_alias_id", int64(tagAliasID)), ) utils.HandleEvent(span, localLogger, "Starting tag alias deletion") @@ -117,11 +113,7 @@ func DeleteTagAlias(ctx context.Context, tagAliasName models.TagAliasName) error return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) } - if len(tagAliasName) == 0 { - return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.TagAliasNameIsEmpty}) - } - - result := client.WithContext(ctx).Delete(&tagAlias, tagAliasName) + result := client.WithContext(ctx).Delete(&tagAlias, tagAliasID) if result.Error != nil { if errors.Is(result.Error, gorm.ErrRecordNotFound) { return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.NoDataFound}) diff --git a/pkg/database/tagAlias_test.go b/pkg/database/tagAlias_test.go index 68e58fa..c94c30d 100644 --- a/pkg/database/tagAlias_test.go +++ b/pkg/database/tagAlias_test.go @@ -5,8 +5,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) @@ -44,8 +44,9 @@ func TestCreateTagAlias(t *testing.T) { // -- Create TagAlias to test with validTagAlias := models.TagAlias{ + ID: 1, Name: "valid_tag_alias_name", - TagID: validTag.Name, + TagID: validTag.ID, } // -- @@ -53,7 +54,7 @@ func TestCreateTagAlias(t *testing.T) { type args struct { ctx context.Context tagAliasName models.TagAliasName - tagName models.TagName + tagID models.TagID } tests := []struct { name string @@ -66,7 +67,7 @@ func TestCreateTagAlias(t *testing.T) { args: args{ ctx: ctx, tagAliasName: validTagAlias.Name, - tagName: validTag.Name, + tagID: validTag.ID, }, want: validTagAlias, wantErr: false, @@ -76,7 +77,7 @@ func TestCreateTagAlias(t *testing.T) { args: args{ ctx: ctx, tagAliasName: validTagAlias.Name, - tagName: validTag.Name, + tagID: validTag.ID, }, want: models.TagAlias{}, wantErr: true, @@ -86,17 +87,7 @@ func TestCreateTagAlias(t *testing.T) { args: args{ ctx: ctx, tagAliasName: "", - tagName: validTag.Name, - }, - want: models.TagAlias{}, - wantErr: true, - }, - { - name: "Test 04: tagName name is empty", - args: args{ - ctx: ctx, - tagAliasName: validTagAlias.Name, - tagName: "", + tagID: validTag.ID, }, want: models.TagAlias{}, wantErr: true, @@ -104,7 +95,7 @@ func TestCreateTagAlias(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := CreateTagAlias(tt.args.ctx, tt.args.tagAliasName, tt.args.tagName) + got, err := CreateTagAlias(tt.args.ctx, tt.args.tagAliasName, tt.args.tagID) if (err != nil) != tt.wantErr { t.Errorf("CreateTagAlias() error = %v, wantErr %v", err, tt.wantErr) return @@ -138,14 +129,14 @@ func TestCreateTagAliasInBatch(t *testing.T) { // -- Create Tags to test with validTags := test.GenerateRandomTags(5) - err = CreateTagInBatch(ctx, validTags, len(validTags)) + tags, err := CreateTagInBatch(ctx, validTags, len(validTags)) if err != nil { t.Fatalf("CreateTags err: %v", err) } // -- // -- Create TagAlias to test with - validTagGroup := test.GenerateRandomTagAlias(validTags, 5) + validTagGroup := test.GenerateRandomTagAlias(tags, 5) // -- // -- -- Tests @@ -239,7 +230,7 @@ func TestDeleteTagAlias(t *testing.T) { // -- Create TagAlias to test with validTagAlias := models.TagAlias{ Name: "valid_tag_group_name", - TagID: validTag.Name, + TagID: validTag.ID, } validTagAlias, err = CreateTagAlias(ctx, validTagAlias.Name, validTagAlias.TagID) if err != nil { @@ -249,8 +240,8 @@ func TestDeleteTagAlias(t *testing.T) { // -- -- Tests type args struct { - ctx context.Context - tagAliasName models.TagAliasName + ctx context.Context + tagAliasID models.TagAliasID } tests := []struct { name string @@ -260,31 +251,23 @@ func TestDeleteTagAlias(t *testing.T) { { name: "Test 01: Valid TagAlias", args: args{ - ctx: ctx, - tagAliasName: validTagAlias.Name, + ctx: ctx, + tagAliasID: validTagAlias.ID, }, wantErr: false, }, { name: "Test 02: Not existing TagAlias", args: args{ - ctx: ctx, - tagAliasName: validTagAlias.Name, + ctx: ctx, + tagAliasID: validTagAlias.ID, }, wantErr: false, }, - { - name: "Test 03: Empty TagAliasName ", - args: args{ - ctx: ctx, - tagAliasName: "", - }, - wantErr: true, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := DeleteTagAlias(tt.args.ctx, tt.args.tagAliasName); (err != nil) != tt.wantErr { + if err := DeleteTagAlias(tt.args.ctx, tt.args.tagAliasID); (err != nil) != tt.wantErr { t.Errorf("DeleteTagAlias() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/pkg/database/tagGroup.go b/pkg/database/tagGroup.go index d8fa1aa..7bd2ae9 100644 --- a/pkg/database/tagGroup.go +++ b/pkg/database/tagGroup.go @@ -4,27 +4,27 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" ) -func CreateTagGroup(ctx context.Context, tagGroupName models.TagGroupName, tagName models.TagName) (models.TagGroup, error) { +func CreateTagGroup(ctx context.Context, tagGroupName models.TagGroupName, tagID models.TagID) (models.TagGroup, error) { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "CreateTagGroup") defer span.End() localLogger = localLogger.WithFields(log.Fields{ "tag_group_name": tagGroupName, - "tag_name": tagName, + "tag_name": tagID, }) span.SetAttributes( attribute.String("tag_group_name", string(tagGroupName)), - attribute.String("tag_name", string(tagName)), + attribute.Int64("tag_name", int64(tagID)), ) utils.HandleEvent(span, localLogger, "Starting tag group creation") @@ -37,13 +37,9 @@ func CreateTagGroup(ctx context.Context, tagGroupName models.TagGroupName, tagNa return models.TagGroup{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagGroupNameIsEmpty}) } - if tagName == "" { - return models.TagGroup{}, utils.HandleError(ctx, span, localLogger, &otterError.EntityValidationFailed{Reason: otterError.TagNameIsEmpty}) - } - tagGroup := models.TagGroup{ Name: tagGroupName, - TagID: tagName, + TagID: tagID, } result := client.WithContext(ctx).Create(&tagGroup) @@ -100,16 +96,16 @@ func CreateTagGroupInBatch(ctx context.Context, tagsGroups []models.TagGroup, ba return nil } -func DeleteTagGroup(ctx context.Context, tagGroupName models.TagGroupName) error { +func DeleteTagGroup(ctx context.Context, tagGroupID models.TagGroupID) error { ctx, span, localLogger := utils.SetupTracing(ctx, tracer, "DeleteTagGroup") defer span.End() span.SetAttributes( - attribute.String("tag_group_name", string(tagGroupName)), + attribute.Int64("tag_group_id", int64(tagGroupID)), ) localLogger = localLogger.WithFields(log.Fields{ - "tag_group_name": tagGroupName, + "tag_group_id": tagGroupID, }) utils.HandleEvent(span, localLogger, "Starting tag group deletion") @@ -120,11 +116,7 @@ func DeleteTagGroup(ctx context.Context, tagGroupName models.TagGroupName) error return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.DatabaseIsNotConnected}) } - if len(tagGroupName) == 0 { - return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.TagGroupNameIsEmpty}) - } - - result := client.WithContext(ctx).Delete(&tagGroup, tagGroupName) + result := client.WithContext(ctx).Delete(&tagGroup, tagGroupID) if result.Error != nil { if errors.Is(result.Error, gorm.ErrRecordNotFound) { return utils.HandleError(ctx, span, localLogger, &otterError.Database{Reason: otterError.NoDataFound}) diff --git a/pkg/database/tagGroup_test.go b/pkg/database/tagGroup_test.go index 3f75cf3..892d4ca 100644 --- a/pkg/database/tagGroup_test.go +++ b/pkg/database/tagGroup_test.go @@ -5,8 +5,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) @@ -44,8 +44,9 @@ func TestCreateTagGroup(t *testing.T) { // -- Create TagGroup to test with validTagGroup := models.TagGroup{ + ID: 1, Name: "valid_tag_group_name", - TagID: validTag.Name, + TagID: validTag.ID, } // -- @@ -53,7 +54,7 @@ func TestCreateTagGroup(t *testing.T) { type args struct { ctx context.Context tagGroupName models.TagGroupName - tagName models.TagName + tagID models.TagID } var tests = []struct { name string @@ -66,7 +67,7 @@ func TestCreateTagGroup(t *testing.T) { args: args{ ctx: ctx, tagGroupName: validTagGroup.Name, - tagName: validTag.Name, + tagID: validTag.ID, }, want: validTagGroup, wantErr: false, @@ -76,7 +77,7 @@ func TestCreateTagGroup(t *testing.T) { args: args{ ctx: ctx, tagGroupName: validTagGroup.Name, - tagName: validTag.Name, + tagID: validTag.ID, }, want: models.TagGroup{}, wantErr: true, @@ -86,17 +87,7 @@ func TestCreateTagGroup(t *testing.T) { args: args{ ctx: ctx, tagGroupName: "", - tagName: validTag.Name, - }, - want: models.TagGroup{}, - wantErr: true, - }, - { - name: "Test 04: tagName name is empty", - args: args{ - ctx: ctx, - tagGroupName: validTagGroup.Name, - tagName: "", + tagID: validTag.ID, }, want: models.TagGroup{}, wantErr: true, @@ -104,7 +95,7 @@ func TestCreateTagGroup(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got, err := CreateTagGroup(tt.args.ctx, tt.args.tagGroupName, tt.args.tagName) + got, err := CreateTagGroup(tt.args.ctx, tt.args.tagGroupName, tt.args.tagID) if (err != nil) != tt.wantErr { t.Errorf("CreateTagGroup() error = %v, wantErr %v", err, tt.wantErr) return @@ -138,14 +129,14 @@ func TestCreateTagGroupInBatch(t *testing.T) { // -- Create Tags to test with validTags := test.GenerateRandomTags(5) - err = CreateTagInBatch(ctx, validTags, len(validTags)) + tags, err := CreateTagInBatch(ctx, validTags, len(validTags)) if err != nil { t.Fatalf("CreateTags err: %v", err) } // -- // -- Create TagGroup to test with - validTagGroup := test.GenerateRandomTagGroups(validTags, 5) + validTagGroup := test.GenerateRandomTagGroups(tags, 5) // -- // -- -- Tests @@ -239,7 +230,7 @@ func TestDeleteTagGroup(t *testing.T) { // -- Create TagGroup to test with validTagGroup := models.TagGroup{ Name: "valid_tag_group_name", - TagID: validTag.Name, + TagID: validTag.ID, } validTagGroup, err = CreateTagGroup(ctx, validTagGroup.Name, validTagGroup.TagID) if err != nil { @@ -249,8 +240,8 @@ func TestDeleteTagGroup(t *testing.T) { // -- -- Tests type args struct { - ctx context.Context - tagGroupName models.TagGroupName + ctx context.Context + tagGroupID models.TagGroupID } tests := []struct { name string @@ -260,31 +251,23 @@ func TestDeleteTagGroup(t *testing.T) { { name: "Test 01: Valid TagGroup", args: args{ - ctx: ctx, - tagGroupName: validTagGroup.Name, + ctx: ctx, + tagGroupID: validTagGroup.ID, }, wantErr: false, }, { name: "Test 02: Not existing TagGroup", args: args{ - ctx: ctx, - tagGroupName: validTagGroup.Name, + ctx: ctx, + tagGroupID: validTagGroup.ID, }, wantErr: false, }, - { - name: "Test 03: Empty TagGroupName ", - args: args{ - ctx: ctx, - tagGroupName: "", - }, - wantErr: true, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := DeleteTagGroup(tt.args.ctx, tt.args.tagGroupName); (err != nil) != tt.wantErr { + if err := DeleteTagGroup(tt.args.ctx, tt.args.tagGroupID); (err != nil) != tt.wantErr { t.Errorf("DeleteTagGroup() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/pkg/database/tag_test.go b/pkg/database/tag_test.go index be359a7..1e81c55 100644 --- a/pkg/database/tag_test.go +++ b/pkg/database/tag_test.go @@ -5,8 +5,8 @@ import ( "reflect" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) @@ -33,6 +33,7 @@ func TestCreateTag(t *testing.T) { // -- Create Tag to test with validTag := models.Tag{ + ID: 1, Name: "valid_tag", Type: models.General, } @@ -41,6 +42,7 @@ func TestCreateTag(t *testing.T) { // -- -- Tests type args struct { ctx context.Context + tagID models.TagID tagName models.TagName tagType models.TagType } @@ -54,6 +56,7 @@ func TestCreateTag(t *testing.T) { name: "Test 01: Valid tag", args: args{ ctx: ctx, + tagID: validTag.ID, tagType: validTag.Type, tagName: validTag.Name, }, @@ -64,6 +67,7 @@ func TestCreateTag(t *testing.T) { name: "Test 02: Duplicate tag", args: args{ ctx: ctx, + tagID: validTag.ID, tagType: validTag.Type, tagName: validTag.Name, }, @@ -179,7 +183,7 @@ func TestCreateTagInBatch(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := CreateTagInBatch(tt.args.ctx, tt.args.tags, tt.args.batchSize); (err != nil) != tt.wantErr { + if _, err := CreateTagInBatch(tt.args.ctx, tt.args.tags, tt.args.batchSize); (err != nil) != tt.wantErr { t.Errorf("CreateTagInBatch() error = %v, wantErr %v", err, tt.wantErr) } }) @@ -219,8 +223,8 @@ func TestDeleteTag(t *testing.T) { // -- -- Tests type args struct { - ctx context.Context - tagName models.TagName + ctx context.Context + tagID models.TagID } tests := []struct { name string @@ -230,31 +234,23 @@ func TestDeleteTag(t *testing.T) { { name: "Test 01: Valid Tag", args: args{ - ctx: ctx, - tagName: validTag.Name, + ctx: ctx, + tagID: validTag.ID, }, wantErr: false, }, { name: "Test 02: Not existing Tag", args: args{ - ctx: ctx, - tagName: validTag.Name, + ctx: ctx, + tagID: validTag.ID, }, wantErr: false, }, - { - name: "Test 03: Empty TagName ", - args: args{ - ctx: ctx, - tagName: "", - }, - wantErr: true, - }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - if err := DeleteTag(tt.args.ctx, tt.args.tagName); (err != nil) != tt.wantErr { + if err := DeleteTag(tt.args.ctx, tt.args.tagID); (err != nil) != tt.wantErr { t.Errorf("DeleteTag() error = %v, wantErr %v", err, tt.wantErr) } }) diff --git a/pkg/database/user.go b/pkg/database/user.go index 28364bb..5204b41 100644 --- a/pkg/database/user.go +++ b/pkg/database/user.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/userSource.go b/pkg/database/userSource.go index f7b1b90..5b225c3 100644 --- a/pkg/database/userSource.go +++ b/pkg/database/userSource.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/internal/utils" - otterError "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/error" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/internal/utils" + otterError "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/error" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" log "github.com/sirupsen/logrus" "go.opentelemetry.io/otel/attribute" "gorm.io/gorm" diff --git a/pkg/database/userSource_test.go b/pkg/database/userSource_test.go index 2adf3f0..787a7b8 100644 --- a/pkg/database/userSource_test.go +++ b/pkg/database/userSource_test.go @@ -7,8 +7,8 @@ import ( "testing" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" "gorm.io/gorm" diff --git a/pkg/database/user_test.go b/pkg/database/user_test.go index 08512fd..a1326ce 100644 --- a/pkg/database/user_test.go +++ b/pkg/database/user_test.go @@ -5,8 +5,8 @@ import ( "fmt" "testing" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/test" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/test" "go.opentelemetry.io/contrib/bridges/otellogrus" "go.opentelemetry.io/otel" ) diff --git a/pkg/models/const.go b/pkg/models/const.go index 18d5df9..4096c3a 100644 --- a/pkg/models/const.go +++ b/pkg/models/const.go @@ -12,8 +12,11 @@ type ( SourceDomain string TagName string + TagID int64 TagGroupName string + TagGroupID int64 TagAliasName string + TagAliasID int64 ScrapeTimeInterval int UserLastScrapeTime time.Time diff --git a/pkg/models/scrape_history.go b/pkg/models/scrape_history.go index f5c6ccd..0e2b860 100644 --- a/pkg/models/scrape_history.go +++ b/pkg/models/scrape_history.go @@ -5,7 +5,7 @@ import ( ) type ScrapeHistory struct { - ScrapeTaskID ScrapeTaskID `json:"scrape_task_id" gorm:"primaryKey"` + ID ScrapeTaskID `json:"scrape_task_id" gorm:"primaryKey"` UserSourceID UserSourceID `json:"user_source_id" gorm:""` CreatedAt time.Time `json:"created_at" gorm:""` FinishedAt time.Time `json:"finished_at" gorm:""` diff --git a/pkg/models/tag.go b/pkg/models/tag.go index 4e87361..55b10ff 100644 --- a/pkg/models/tag.go +++ b/pkg/models/tag.go @@ -2,7 +2,8 @@ package models // Tag models type Tag struct { - Name TagName `json:"name" gorm:"primaryKey"` + ID TagID `json:"id" gorm:"primaryKey"` + Name TagName `json:"name"` Type TagType `json:"type" gorm:"column:tag_type"` Aliases []TagAlias `json:"aliases,omitempty" gorm:"foreignKey:TagID"` Groups []TagGroup `json:"groups,omitempty" gorm:"foreignKey:TagID"` @@ -15,8 +16,9 @@ func (Tag) TableName() string { // TagAlias model type TagAlias struct { - Name TagAliasName `json:"name" gorm:"primaryKey"` - TagID TagName `json:"tag_id"` + ID TagAliasID `json:"id" gorm:"primaryKey"` + Name TagAliasName `json:"name"` + TagID TagID `json:"tag_name"` } func (TagAlias) TableName() string { @@ -25,8 +27,9 @@ func (TagAlias) TableName() string { // TagGroup model type TagGroup struct { - Name TagGroupName `json:"name" gorm:"primaryKey"` - TagID TagName `json:"tag_id"` + ID TagGroupID `json:"id" gorm:"primaryKey"` + Name TagGroupName `json:"name"` + TagID TagID `json:"tag_name"` } func (TagGroup) TableName() string { @@ -34,6 +37,7 @@ func (TagGroup) TableName() string { } type TagsWithFrequency struct { + ID int64 `json:"id" gorm:"primaryKey"` Frequency int64 `json:"frequency"` Tags Tag `json:"tags"` } diff --git a/test/generator.go b/test/generator.go index e9c8667..bb853e8 100644 --- a/test/generator.go +++ b/test/generator.go @@ -5,7 +5,7 @@ import ( "math/rand" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" "github.com/davecgh/go-spew/spew" gonanoid "github.com/matoous/go-nanoid/v2" "gorm.io/gorm" @@ -38,11 +38,11 @@ func GenerateRandomTagGroups(tags []models.Tag, num int) []models.TagGroup { for i := 0; i < num; i++ { id, _ := gonanoid.New(10) groupName := fmt.Sprintf("tag_group_%s", id) - randomTag := tags[rand.Intn(len(tags))] + // randomTag := tags[rand.Intn(len(tags))] tagGroup := models.TagGroup{ Name: models.TagGroupName(groupName), - TagID: randomTag.Name, + TagID: tags[rand.Intn(len(tags))].ID, } tagGroups = append(tagGroups, tagGroup) @@ -57,11 +57,11 @@ func GenerateRandomTagAlias(tags []models.Tag, num int) []models.TagAlias { for i := 0; i < num; i++ { id, _ := gonanoid.New(10) groupName := fmt.Sprintf("tag_alias_%s", id) - randomTag := tags[rand.Intn(len(tags))] + // randomTag := tags[rand.Intn(len(tags))] tagAlias := models.TagAlias{ Name: models.TagAliasName(groupName), - TagID: randomTag.Name, + TagID: tags[rand.Intn(len(tags))].ID, } tagAliases = append(tagAliases, tagAlias) diff --git a/test/helper.go b/test/helper.go index 1f3a5dc..5c81540 100644 --- a/test/helper.go +++ b/test/helper.go @@ -8,7 +8,7 @@ import ( "strings" "time" - "git.anthrove.art/Anthrove/otter-space-sdk/v5/pkg/models" + "git.anthrove.art/Anthrove/otter-space-sdk/v6/pkg/models" migrate "github.com/rubenv/sql-migrate" postgrescontainer "github.com/testcontainers/testcontainers-go/modules/postgres" "gorm.io/driver/postgres"