refactor: reorganized code structure
Signed-off-by: SoXX <soxx@fenpa.ws>
This commit is contained in:
parent
429f68899d
commit
bc8b5bb4a7
@ -10,75 +10,13 @@ type OtterSpace interface {
|
|||||||
// Connect establishes a connection to the database.
|
// Connect establishes a connection to the database.
|
||||||
Connect(ctx context.Context, config models.DatabaseConfig) error
|
Connect(ctx context.Context, config models.DatabaseConfig) error
|
||||||
|
|
||||||
// CreateUserWithRelationToSource adds a user with a relation to a source.
|
User
|
||||||
CreateUserWithRelationToSource(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, accountId string, accountUsername string) error
|
|
||||||
|
|
||||||
// CreateSource adds a new source to the database.
|
Source
|
||||||
CreateSource(ctx context.Context, anthroveSource *models.Source) error
|
|
||||||
|
|
||||||
// CreatePost adds a new post to the database.
|
TagAlias
|
||||||
CreatePost(ctx context.Context, anthrovePost *models.Post) error
|
|
||||||
|
|
||||||
// CreateTagAndReferenceToPost adds a tag with a relation to a post.
|
TagGroup
|
||||||
CreateTagAndReferenceToPost(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error
|
|
||||||
|
|
||||||
// CreateReferenceBetweenPostAndSource links a post with a source.
|
UserSource
|
||||||
CreateReferenceBetweenPostAndSource(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error
|
|
||||||
|
|
||||||
// CreateReferenceBetweenUserAndPost links a user with a post.
|
|
||||||
CreateReferenceBetweenUserAndPost(ctx context.Context, anthroveUserID models.AnthroveUserID, anthrovePostID models.AnthrovePostID) error
|
|
||||||
|
|
||||||
// CheckReferenceBetweenUserAndPost checks if a user-post link exists.
|
|
||||||
CheckReferenceBetweenUserAndPost(ctx context.Context, anthroveUserID models.AnthroveUserID, sourcePostID models.AnthrovePostID) (bool, error)
|
|
||||||
|
|
||||||
// GetPostByAnthroveID retrieves a post by its Anthrove ID.
|
|
||||||
GetPostByAnthroveID(ctx context.Context, anthrovePostID models.AnthrovePostID) (*models.Post, error)
|
|
||||||
|
|
||||||
// GetPostByURL retrieves a post by its source URL.
|
|
||||||
GetPostByURL(ctx context.Context, postURL string) (*models.Post, error)
|
|
||||||
|
|
||||||
// GetPostBySourceID retrieves a post by its source ID.
|
|
||||||
GetPostBySourceID(ctx context.Context, sourceID models.AnthroveSourceID) (*models.Post, error)
|
|
||||||
|
|
||||||
// GetUserFavoritesCount retrieves the count of a user's favorites.
|
|
||||||
GetUserFavoritesCount(ctx context.Context, anthroveUserID models.AnthroveUserID) (int64, error)
|
|
||||||
|
|
||||||
// GetUserSourceLinks retrieves the source links of a user.
|
|
||||||
GetUserSourceLinks(ctx context.Context, anthroveUserID models.AnthroveUserID) (map[string]models.UserSource, error)
|
|
||||||
|
|
||||||
// GetUserSourceBySourceID retrieves a specified source link of a user.
|
|
||||||
GetUserSourceBySourceID(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID) (map[string]models.UserSource, error)
|
|
||||||
|
|
||||||
// GetAllAnthroveUserIDs retrieves all Anthrove user IDs.
|
|
||||||
GetAllAnthroveUserIDs(ctx context.Context) ([]models.AnthroveUserID, error)
|
|
||||||
|
|
||||||
// GetUserFavoriteWithPagination retrieves a user's favorite posts with pagination.
|
|
||||||
GetUserFavoriteWithPagination(ctx context.Context, anthroveUserID models.AnthroveUserID, skip int, limit int) (*models.FavoriteList, error)
|
|
||||||
|
|
||||||
// GetUserTagWitRelationToFavedPosts retrieves a user's tags through their favorited posts.
|
|
||||||
GetUserTagWitRelationToFavedPosts(ctx context.Context, anthroveUserID models.AnthroveUserID) ([]models.TagsWithFrequency, error)
|
|
||||||
|
|
||||||
// GetAllTags retrieves all tags.
|
|
||||||
GetAllTags(ctx context.Context) ([]models.Tag, error)
|
|
||||||
|
|
||||||
// GetAllSources retrieves all sources.
|
|
||||||
GetAllSources(ctx context.Context) ([]models.Source, error)
|
|
||||||
|
|
||||||
// GetSourceByDomain retrieves a source by its URL.
|
|
||||||
GetSourceByDomain(ctx context.Context, sourceDomain models.AnthroveSourceDomain) (*models.Source, error)
|
|
||||||
|
|
||||||
GetAllTagAlias(ctx context.Context) ([]models.TagAlias, error)
|
|
||||||
GetAllTagAliasByTag(ctx context.Context, tagID models.AnthroveTagID) ([]models.TagAlias, error)
|
|
||||||
CreateTagAlias(ctx context.Context, tagAliasName models.AnthroveTagAliasName, tagID models.AnthroveTagID) error
|
|
||||||
DeleteTagAlias(ctx context.Context, tagAliasName models.AnthroveTagAliasName) error
|
|
||||||
|
|
||||||
GetAllTagGroup(ctx context.Context) ([]models.TagGroup, error)
|
|
||||||
GetAllTagGroupByTag(ctx context.Context, tagID models.AnthroveTagID) ([]models.TagGroup, error)
|
|
||||||
CreateTagGroup(ctx context.Context, tagGroupName models.AnthroveTagGroupName, tagID models.AnthroveTagID)
|
|
||||||
DeleteTagGroup(ctx context.Context, tagGroupName models.AnthroveTagGroupName) error
|
|
||||||
|
|
||||||
UpdateUserSourceScrapeTimeInterval(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, scrapeTime models.AnthroveScrapeTimeInterval) error
|
|
||||||
UpdateUserSourceLastScrapeTime(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, lastScrapeTime models.AnthroveUserLastScrapeTime) error
|
|
||||||
|
|
||||||
UpdateUserSourceValidation(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, valid bool) error
|
|
||||||
}
|
}
|
||||||
|
28
pkg/database/post.go
Normal file
28
pkg/database/post.go
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Post interface {
|
||||||
|
|
||||||
|
// CreatePost adds a new post to the database.
|
||||||
|
CreatePost(ctx context.Context, anthrovePost *models.Post) error
|
||||||
|
|
||||||
|
// GetPostByAnthroveID retrieves a post by its Anthrove ID.
|
||||||
|
GetPostByAnthroveID(ctx context.Context, anthrovePostID models.AnthrovePostID) (*models.Post, error)
|
||||||
|
|
||||||
|
// GetPostByURL retrieves a post by its source URL.
|
||||||
|
GetPostByURL(ctx context.Context, postURL string) (*models.Post, error)
|
||||||
|
|
||||||
|
// GetPostBySourceID retrieves a post by its source ID.
|
||||||
|
GetPostBySourceID(ctx context.Context, sourceID models.AnthroveSourceID) (*models.Post, error)
|
||||||
|
|
||||||
|
// CreateTagAndReferenceToPost adds a tag with a relation to a post.
|
||||||
|
CreateTagAndReferenceToPost(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error
|
||||||
|
|
||||||
|
// CreateReferenceBetweenPostAndSource links a post with a source.
|
||||||
|
CreateReferenceBetweenPostAndSource(ctx context.Context, anthrovePostID models.AnthrovePostID, sourceDomain models.AnthroveSourceDomain, postURL models.AnthrovePostURL, config models.PostReferenceConfig) error
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package database
|
package postgres
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -9,6 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/database"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
_ "github.com/lib/pq"
|
_ "github.com/lib/pq"
|
||||||
migrate "github.com/rubenv/sql-migrate"
|
migrate "github.com/rubenv/sql-migrate"
|
||||||
@ -26,7 +27,7 @@ type postgresqlConnection struct {
|
|||||||
debug bool
|
debug bool
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPostgresqlConnection() OtterSpace {
|
func NewPostgresqlConnection() database.OtterSpace {
|
||||||
return &postgresqlConnection{
|
return &postgresqlConnection{
|
||||||
db: nil,
|
db: nil,
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package database
|
package postgres
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
@ -7,6 +7,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
"git.dragse.it/anthrove/otter-space-sdk/internal/postgres"
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/database"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
"git.dragse.it/anthrove/otter-space-sdk/test"
|
"git.dragse.it/anthrove/otter-space-sdk/test"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
@ -16,7 +17,7 @@ func TestNewPostgresqlConnection(t *testing.T) {
|
|||||||
// Test
|
// Test
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name string
|
name string
|
||||||
want OtterSpace
|
want database.OtterSpace
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "Test 1: Create new postgresql connection",
|
name: "Test 1: Create new postgresql connection",
|
19
pkg/database/source.go
Normal file
19
pkg/database/source.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Source interface {
|
||||||
|
|
||||||
|
// CreateSource adds a new source to the database.
|
||||||
|
CreateSource(ctx context.Context, anthroveSource *models.Source) error
|
||||||
|
|
||||||
|
// GetAllSources retrieves all sources.
|
||||||
|
GetAllSources(ctx context.Context) ([]models.Source, error)
|
||||||
|
|
||||||
|
// GetSourceByDomain retrieves a source by its URL.
|
||||||
|
GetSourceByDomain(ctx context.Context, sourceDomain models.AnthroveSourceDomain) (*models.Source, error)
|
||||||
|
}
|
12
pkg/database/tag.go
Normal file
12
pkg/database/tag.go
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Tag interface {
|
||||||
|
// GetAllTags retrieves all tags.
|
||||||
|
GetAllTags(ctx context.Context) ([]models.Tag, error)
|
||||||
|
}
|
14
pkg/database/tagalias.go
Normal file
14
pkg/database/tagalias.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TagAlias interface {
|
||||||
|
GetAllTagAlias(ctx context.Context) ([]models.TagAlias, error)
|
||||||
|
GetAllTagAliasByTag(ctx context.Context, tagID models.AnthroveTagID) ([]models.TagAlias, error)
|
||||||
|
CreateTagAlias(ctx context.Context, tagAliasName models.AnthroveTagAliasName, tagID models.AnthroveTagID) error
|
||||||
|
DeleteTagAlias(ctx context.Context, tagAliasName models.AnthroveTagAliasName) error
|
||||||
|
}
|
14
pkg/database/taggroup.go
Normal file
14
pkg/database/taggroup.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type TagGroup interface {
|
||||||
|
GetAllTagGroup(ctx context.Context) ([]models.TagGroup, error)
|
||||||
|
GetAllTagGroupByTag(ctx context.Context, tagID models.AnthroveTagID) ([]models.TagGroup, error)
|
||||||
|
CreateTagGroup(ctx context.Context, tagGroupName models.AnthroveTagGroupName, tagID models.AnthroveTagID)
|
||||||
|
DeleteTagGroup(ctx context.Context, tagGroupName models.AnthroveTagGroupName) error
|
||||||
|
}
|
29
pkg/database/user.go
Normal file
29
pkg/database/user.go
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type User interface {
|
||||||
|
// GetAllAnthroveUserIDs retrieves all Anthrove user IDs.
|
||||||
|
GetAllAnthroveUserIDs(ctx context.Context) ([]models.AnthroveUserID, error)
|
||||||
|
|
||||||
|
// CreateUserWithRelationToSource adds a user with a relation to a source.
|
||||||
|
CreateUserWithRelationToSource(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, accountId string, accountUsername string) error
|
||||||
|
// CreateReferenceBetweenUserAndPost links a user with a post.
|
||||||
|
CreateReferenceBetweenUserAndPost(ctx context.Context, anthroveUserID models.AnthroveUserID, anthrovePostID models.AnthrovePostID) error
|
||||||
|
// CheckReferenceBetweenUserAndPost checks if a user-post link exists.
|
||||||
|
CheckReferenceBetweenUserAndPost(ctx context.Context, anthroveUserID models.AnthroveUserID, sourcePostID models.AnthrovePostID) (bool, error)
|
||||||
|
// GetUserFavoritesCount retrieves the count of a user's favorites.
|
||||||
|
GetUserFavoritesCount(ctx context.Context, anthroveUserID models.AnthroveUserID) (int64, error)
|
||||||
|
// GetUserSourceLinks retrieves the source links of a user.
|
||||||
|
GetUserSourceLinks(ctx context.Context, anthroveUserID models.AnthroveUserID) (map[string]models.UserSource, error)
|
||||||
|
// GetUserSourceBySourceID retrieves a specified source link of a user.
|
||||||
|
GetUserSourceBySourceID(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID) (map[string]models.UserSource, error)
|
||||||
|
// GetUserFavoriteWithPagination retrieves a user's favorite posts with pagination.
|
||||||
|
GetUserFavoriteWithPagination(ctx context.Context, anthroveUserID models.AnthroveUserID, skip int, limit int) (*models.FavoriteList, error)
|
||||||
|
// GetUserTagWitRelationToFavedPosts retrieves a user's tags through their favorited posts.
|
||||||
|
GetUserTagWitRelationToFavedPosts(ctx context.Context, anthroveUserID models.AnthroveUserID) ([]models.TagsWithFrequency, error)
|
||||||
|
}
|
14
pkg/database/usersource.go
Normal file
14
pkg/database/usersource.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package database
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.dragse.it/anthrove/otter-space-sdk/pkg/models"
|
||||||
|
)
|
||||||
|
|
||||||
|
type UserSource interface {
|
||||||
|
UpdateUserSourceScrapeTimeInterval(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, scrapeTime models.AnthroveScrapeTimeInterval) error
|
||||||
|
UpdateUserSourceLastScrapeTime(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, lastScrapeTime models.AnthroveUserLastScrapeTime) error
|
||||||
|
|
||||||
|
UpdateUserSourceValidation(ctx context.Context, anthroveUserID models.AnthroveUserID, sourceID models.AnthroveSourceID, valid bool) error
|
||||||
|
}
|
Reference in New Issue
Block a user