BREAKING CHANGE: V2 of thr SDK #12
@ -10,75 +10,13 @@ type OtterSpace interface {
|
||||
// Connect establishes a connection to the database.
|
||||
Connect(ctx context.Context, config models.DatabaseConfig) 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
|
||||
User
|
||||
|
||||
// CreateSource adds a new source to the database.
|
||||
CreateSource(ctx context.Context, anthroveSource *models.Source) error
|
||||
Source
|
||||
|
||||
// CreatePost adds a new post to the database.
|
||||
CreatePost(ctx context.Context, anthrovePost *models.Post) error
|
||||
TagAlias
|
||||
|
||||
// CreateTagAndReferenceToPost adds a tag with a relation to a post.
|
||||
CreateTagAndReferenceToPost(ctx context.Context, anthrovePostID models.AnthrovePostID, anthroveTag *models.Tag) error
|
||||
TagGroup
|
||||
|
||||
// CreateReferenceBetweenPostAndSource links a post with a source.
|
||||
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
|
||||
UserSource
|
||||
}
|
||||
|
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 (
|
||||
"context"
|
||||
@ -9,6 +9,7 @@ import (
|
||||
"time"
|
||||
|
||||
"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"
|
||||
_ "github.com/lib/pq"
|
||||
migrate "github.com/rubenv/sql-migrate"
|
||||
@ -26,7 +27,7 @@ type postgresqlConnection struct {
|
||||
debug bool
|
||||
}
|
||||
|
||||
func NewPostgresqlConnection() OtterSpace {
|
||||
func NewPostgresqlConnection() database.OtterSpace {
|
||||
return &postgresqlConnection{
|
||||
db: nil,
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package database
|
||||
package postgres
|
||||
|
||||
import (
|
||||
"context"
|
||||
@ -7,6 +7,7 @@ import (
|
||||
"testing"
|
||||
|
||||
"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/test"
|
||||
"gorm.io/gorm"
|
||||
@ -16,7 +17,7 @@ func TestNewPostgresqlConnection(t *testing.T) {
|
||||
// Test
|
||||
tests := []struct {
|
||||
name string
|
||||
want OtterSpace
|
||||
want database.OtterSpace
|
||||
}{
|
||||
{
|
||||
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.
|
||||
lennard.brinkhaus marked this conversation as resolved
Outdated
|
||||
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)
|
||||
|
||||
fenpaws marked this conversation as resolved
lennard.brinkhaus
commented
Here you write Relation and one function below you call it reference... shouldn't be it the same? Here you write Relation and one function below you call it reference... shouldn't be it the same?
fenpaws
commented
I dont see what you mean, in this file there is nothing with I dont see what you mean, in this file there is nothing with `reference`
|
||||
// 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
Did I miss it or where are the create Tag, delete tag and so on functions?
we never decided to implement those functions since those operations are build in other functions, but I can add a Create, Get and Delete functions for Tag. Like i did fir TagGroup and TagType
yes please