refactor(app): ♻️ use new repository

master
Xeronith 2022-10-01 12:37:43 +03:30
rodzic 712564dada
commit d308a33f37
21 zmienionych plików z 46 dodań i 351 usunięć

Wyświetl plik

@ -3,31 +3,22 @@ module app
go 1.19
require (
github.com/gofiber/fiber/v2 v2.38.1
github.com/google/uuid v1.3.0
github.com/mazen160/go-random v0.0.0-20210308102632-d2b501c85c03
github.com/mitchellh/mapstructure v1.5.0
github.com/swaggo/swag v1.8.6
gorm.io/gorm v1.23.8
)
require (
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/andybalholm/brotli v1.0.4 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.19.6 // indirect
github.com/go-openapi/spec v0.20.4 // indirect
github.com/go-openapi/swag v0.19.15 // indirect
github.com/jinzhu/inflection v1.0.0 // indirect
github.com/jinzhu/now v1.1.4 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/klauspost/compress v1.15.0 // indirect
github.com/mailru/easyjson v0.7.6 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
github.com/valyala/fasthttp v1.40.0 // indirect
github.com/valyala/tcplisten v1.0.0 // indirect
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 // indirect
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 // indirect
golang.org/x/text v0.3.7 // indirect

Wyświetl plik

@ -4,8 +4,6 @@ github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tN
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/andybalholm/brotli v1.0.4 h1:V7DdXeJtZscaqfNuAdSRuRFzuiKlHSC/Zh3zl9qY3JY=
github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@ -20,18 +18,10 @@ github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7
github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk=
github.com/go-openapi/swag v0.19.15 h1:D2NRCBzS9/pEY3gP9Nl8aDqGUcPFrwG2p+CNFrLyrCM=
github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ=
github.com/gofiber/fiber/v2 v2.38.1 h1:GEQ/Yt3Wsf2a30iTqtLXlBYJZso0JXPovt/tmj5H9jU=
github.com/gofiber/fiber/v2 v2.38.1/go.mod h1:t0NlbaXzuGH7I+7M4paE848fNWInZ7mfxI/Er1fTth8=
github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I=
github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.4 h1:tHnRBy1i5F2Dh8BAFxqFzxKqqvezXrL2OW1TnX+Mlas=
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
github.com/klauspost/compress v1.15.0 h1:xqfchp4whNFxn5A4XFyyYtitiWI8Hy5EW59jEwcyL6U=
github.com/klauspost/compress v1.15.0/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@ -55,28 +45,15 @@ github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
github.com/swaggo/swag v1.8.6 h1:2rgOaLbonWu1PLP6G+/rYjSvPg0jQE0HtrEKuE380eg=
github.com/swaggo/swag v1.8.6/go.mod h1:jMLeXOOmYyjk8PvHTsXBdrubsNd9gUJTTCzL5iBnseg=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
github.com/valyala/fasthttp v1.40.0 h1:CRq/00MfruPGFLTQKY8b+8SfdK60TxNztjRMnH0t1Yc=
github.com/valyala/fasthttp v1.40.0/go.mod h1:t/G+3rLek+CyY9bnIE+YlMRddxVAAGjhxndDB4i4C0I=
github.com/valyala/tcplisten v1.0.0 h1:rBHj/Xf+E1tRGZyWIWwJDiRY0zc1Js+CV5DqwacVSA8=
github.com/valyala/tcplisten v1.0.0/go.mod h1:T0xQ8SeCZGxckz9qRXTfG43PvQ/mcWh7FwZEA7Ioqkc=
golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3 h1:kQgndtyPBW/JIYERgdxfwMYh3AVStj88WQTlNDi2a+o=
golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM=
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4 h1:HVyaeDAYux4pnY+D/SiwmLOR36ewZ4iGQIIrtnuCjFA=
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs=
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
@ -94,5 +71,3 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776 h1:tQIYjPdBoyREyB9XMu+nnTclpTYkz2zFM+lzLJFO4gQ=
gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
gorm.io/gorm v1.23.8 h1:h8sGJ+biDgBA1AD1Ha9gFCx7h8npU7AsLdlkX0n2TpE=
gorm.io/gorm v1.23.8/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=

Wyświetl plik

@ -2,11 +2,11 @@ package main
import (
"app/docs"
"app/models/repos"
"app/routes"
"caching"
"config"
"db"
"db/repos"
"fmt"
"logging"
"server"

Wyświetl plik

@ -1,9 +0,0 @@
package repos
var All = []interface{}{
&User{},
&IncomingActivity{},
&OutgoingActivity{},
&Follower{},
&Following{},
}

Wyświetl plik

@ -1,87 +0,0 @@
package repos
import (
"contracts"
"db"
"errors"
"github.com/gofiber/fiber/v2"
"gorm.io/gorm"
)
type Access int64
const (
ACCESS_PUBLIC Access = iota
ACCESS_PRIVATE
)
// User struct defines the user
type User struct {
gorm.Model
Username string `gorm:"uniqueIndex;not null"`
Email string `gorm:"uniqueIndex;not null"`
Password string `gorm:"not null"`
DisplayName string
Bio string
Github string
ApiKey string
PrivateKey string
PublicKey string
Avatar string
Banner string
Access Access
}
// CreateUser create a user entry in the user's table
func CreateUser(user *User) error {
if err := db.Executor.Create(user).Error; err != nil {
return err
}
return nil
}
// FindUser searches the user's table with the condition given
func FindUser(conds ...any) (*User, error) {
dest := &User{}
if err := db.Executor.Model(dest).Take(dest, conds...).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, &fiber.Error{
Code: contracts.StatusNotFound,
Message: "user not found",
}
} else {
return nil, &fiber.Error{
Code: contracts.StatusInternalServerError,
Message: err.Error(),
}
}
}
return dest, nil
}
// FindUserById searches the user's table with the id given
func FindUserById(id uint) (*User, error) {
return FindUser("id = ?", id)
}
// FindUserByEmail searches the user's table with the email given
func FindUserByEmail(email string) (*User, error) {
return FindUser("email = ?", email)
}
// FindUserByUsername searches the user's table with the name given
func FindUserByUsername(username string) (*User, error) {
return FindUser("username = ?", username)
}
// UpdateProfile updates the user's profile with the info given
func UpdateProfile(userId interface{}, data interface{}) error {
if err := db.Executor.Model(&User{}).Where("id = ?", userId).Updates(data).Error; err != nil {
return err
}
return nil
}

Wyświetl plik

@ -1,73 +0,0 @@
package repos
import (
"contracts"
"db"
"errors"
"github.com/gofiber/fiber/v2"
"gorm.io/gorm"
)
// Follower struct defines a follower
type Follower struct {
gorm.Model
Target string `gorm:"not null"`
Handle string `gorm:"not null"`
HandleInbox string
Activity string
Accepted bool
}
// CreateFollower creates a new entry in the followers's table
func CreateFollower(follower *Follower) error {
if err := db.Executor.Create(follower).Error; err != nil {
return err
}
return nil
}
// FindFollower searches the followers table with the condition given
func FindFollower(conds ...any) (*Follower, error) {
dest := &Follower{}
if err := db.Executor.Model(&Follower{}).Take(dest, conds...).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, &fiber.Error{
Code: contracts.StatusNotFound,
Message: "follower not found",
}
} else {
return nil, &fiber.Error{
Code: contracts.StatusInternalServerError,
Message: err.Error(),
}
}
}
return dest, nil
}
// FindFollowers finds the user's followers
func FindFollowers(userIden interface{}) ([]Follower, error) {
result := &[]Follower{}
if err := db.Executor.Model(&Follower{}).Find(result, "`target` = ?", userIden).Error; err != nil {
return *result, err
}
return *result, nil
}
// FindFollowerById searches the followers's table with the id given
func FindFollowerById(id uint64) (*Follower, error) {
return FindFollower("id = ?", id)
}
// AcceptFollower accepts a follow request
func AcceptFollower(id interface{}) error {
if err := db.Executor.Model(&Follower{}).Where("id = ?", id).Update("accepted", true).Error; err != nil {
return err
}
return nil
}

Wyświetl plik

@ -1,33 +0,0 @@
package repos
import (
"db"
"gorm.io/gorm"
)
// Following struct defines an account that the user follows
type Following struct {
gorm.Model
Target string `gorm:"not null"`
Handle string `gorm:"not null"`
}
// CreateFollowing creates a new entry in the following's table
func CreateFollowing(following *Following) error {
if err := db.Executor.Create(following).Error; err != nil {
return err
}
return nil
}
// FindFollowing finds what accounts the user is following
func FindFollowing(userIden interface{}) ([]Following, error) {
followings := &[]Following{}
if err := db.Executor.Model(&Following{}).Find(followings, "`target` = ?", userIden).Error; err != nil {
return *followings, err
}
return *followings, nil
}

Wyświetl plik

@ -1,70 +0,0 @@
package repos
import (
"contracts"
"db"
"errors"
"github.com/gofiber/fiber/v2"
"gorm.io/gorm"
)
// IncomingActivity struct defines the activity
type IncomingActivity struct {
gorm.Model
Timestamp int64
From string `gorm:"not null"`
To string `gorm:"not null"`
Guid string `gorm:"uniqueIndex;not null"`
Content string `gorm:"not null"`
}
// CreateIncomingActivity creates an activity entry in the incoming activities table
func CreateIncomingActivity(activity *IncomingActivity) error {
if err := db.Executor.Create(activity).Error; err != nil {
return err
}
return nil
}
// FindIncomingActivity searches the incoming activities table with the condition given
// and returns a single record.
func FindIncomingActivity(conds ...interface{}) (*IncomingActivity, error) {
dest := &IncomingActivity{}
if err := db.Executor.Model(&IncomingActivity{}).Take(dest, conds...).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, &fiber.Error{
Code: contracts.StatusNotFound,
Message: "activity not found",
}
} else {
return nil, &fiber.Error{
Code: contracts.StatusInternalServerError,
Message: err.Error(),
}
}
}
return dest, nil
}
// FindIncomingActivitiesForUser finds the activities posted to user
func FindIncomingActivitiesForUser(userIden interface{}) ([]IncomingActivity, error) {
result := &[]IncomingActivity{}
if err := db.Executor.Model(&IncomingActivity{}).Find(result, "`to` = ?", userIden).Error; err != nil {
return *result, err
}
return *result, nil
}
// FindIncomingActivityById searches the incoming activities table with the id given
func FindIncomingActivityById(id uint) (*IncomingActivity, error) {
return FindIncomingActivity("id = ?", id)
}
// FindIncomingActivityByGuid searches the incoming activities table with the guid given
func FindIncomingActivityByGuid(guid string) (*IncomingActivity, error) {
return FindIncomingActivity("guid = ?", guid)
}

Wyświetl plik

@ -3,9 +3,9 @@ package routes
import (
"activitypub"
"app/models/domain"
"app/models/repos"
"config"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
"strconv"
@ -47,7 +47,7 @@ var Followers = route.New(HttpGet, "/u/:username/followers", func(x IContext) er
actor := x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username)
id := x.StringUtil().Format("%s://%s/u/%s/followers", config.PROTOCOL, config.DOMAIN, username)
followers, err := repos.FindFollowers(actor)
followers, err := repos.Default.FindFollowers(actor)
if err != nil {
return err
}
@ -77,7 +77,7 @@ var AcceptFollowRequest = route.New(HttpPut, "/u/:username/followers/:id/accept"
return x.BadRequest("invalid_id")
}
follower, err := repos.FindFollowerById(followerId)
follower, err := repos.Default.FindFollowerById(followerId)
if err != nil {
return err
}
@ -90,7 +90,7 @@ var AcceptFollowRequest = route.New(HttpPut, "/u/:username/followers/:id/accept"
Object: follower.Activity,
})
user, err := repos.FindUserByUsername(username)
user, err := repos.Default.FindUserByUsername(username)
if err != nil {
return err
}
@ -101,7 +101,7 @@ var AcceptFollowRequest = route.New(HttpPut, "/u/:username/followers/:id/accept"
return err
}
if err := repos.AcceptFollower(follower.ID); err != nil {
if err := repos.Default.AcceptFollower(follower.ID); err != nil {
return err
}

Wyświetl plik

@ -3,9 +3,9 @@ package routes
import (
"activitypub"
"app/models/domain"
"app/models/repos"
"config"
. "contracts"
"db/repos"
"server/route"
)
@ -45,7 +45,7 @@ var Following = route.New(HttpGet, "/u/:username/following", func(x IContext) er
actor := x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username)
id := x.StringUtil().Format("%s://%s/u/%s/following", config.PROTOCOL, config.DOMAIN, username)
followings, err := repos.FindFollowing(actor)
followings, err := repos.Default.FindFollowing(actor)
if err != nil {
return err
}

Wyświetl plik

@ -2,8 +2,8 @@ package routes
import (
"activitypub"
"app/models/repos"
"config"
"db/repos"
"encoding/hex"
"fmt"
"server/mime"

Wyświetl plik

@ -2,9 +2,9 @@ package routes
import (
"activitypub"
"app/models/repos"
"config"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
"time"
@ -20,7 +20,7 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
return x.BadRequest("Bad request")
}
user, err := repos.FindUserByUsername(username)
user, err := repos.Default.FindUserByUsername(username)
if err != nil {
return err
}
@ -60,7 +60,7 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
Accepted: false,
}
if err := repos.CreateFollower(follower); err != nil {
if err := repos.Default.CreateFollower(follower); err != nil {
return x.Conflict(err)
}
@ -77,7 +77,7 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
return err
}
if err := repos.AcceptFollower(follower.ID); err != nil {
if err := repos.Default.AcceptFollower(follower.ID); err != nil {
return err
}
}
@ -106,7 +106,7 @@ var InboxPost = route.New(HttpPost, "/u/:username/inbox", func(x IContext) error
Content: note.Content,
}
if err := repos.CreateIncomingActivity(message); err != nil {
if err := repos.Default.CreateIncomingActivity(message); err != nil {
return x.Conflict(err)
}
@ -127,7 +127,7 @@ var InboxGet = route.New(HttpGet, "/u/:username/inbox", func(x IContext) error {
actor := x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username)
id := x.StringUtil().Format("%s://%s/u/%s/inbox", config.PROTOCOL, config.DOMAIN, username)
messages, err := repos.FindIncomingActivitiesForUser(actor)
messages, err := repos.Default.FindIncomingActivitiesForUser(actor)
if err != nil {
return err
}

Wyświetl plik

@ -2,8 +2,8 @@ package routes
import (
"app/models/dto"
"app/models/repos"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
"utility/jwt"
@ -26,7 +26,7 @@ var Login = route.New(HttpPost, "/api/v1/login", func(x IContext) error {
return err
}
user, err := repos.FindUserByEmail(body.Email)
user, err := repos.Default.FindUserByEmail(body.Email)
if err != nil {
return x.Unauthorized("invalid email or password")
}

Wyświetl plik

@ -1,8 +1,8 @@
package routes
import (
"app/models/repos"
. "contracts"
"db/repos"
"server/route"
)
@ -12,7 +12,7 @@ var Message = route.New(HttpGet, "/m/:guid", func(x IContext) error {
return x.BadRequest("bad_request")
}
response, err := repos.FindOutgoingActivityByGuid(guid)
response, err := repos.Default.FindOutgoingActivityByGuid(guid)
if err != nil {
return err
}

Wyświetl plik

@ -2,9 +2,9 @@ package routes
import (
"activitypub"
"app/models/repos"
"config"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
"time"
@ -18,7 +18,7 @@ var OutboxPost = route.New(HttpPost, "/u/:username/outbox", func(x IContext) err
return x.BadRequest(err)
}
user, err := repos.FindUserByUsername(username)
user, err := repos.Default.FindUserByUsername(username)
if err != nil {
return err
}
@ -60,7 +60,7 @@ var OutboxPost = route.New(HttpPost, "/u/:username/outbox", func(x IContext) err
Content: note.Content,
}
if err := repos.CreateOutgoingActivity(message); err != nil {
if err := repos.Default.CreateOutgoingActivity(message); err != nil {
return x.Conflict(err)
}
@ -76,7 +76,7 @@ var OutboxGet = route.New(HttpGet, "/u/:username/outbox", func(x IContext) error
actor := x.StringUtil().Format("%s://%s/u/%s", config.PROTOCOL, config.DOMAIN, username)
id := x.StringUtil().Format("%s://%s/u/%s/outbox", config.PROTOCOL, config.DOMAIN, username)
messages, err := repos.FindOutgoingActivitiesByUser(actor)
messages, err := repos.Default.FindOutgoingActivitiesByUser(actor)
if err != nil {
return err
}

Wyświetl plik

@ -2,9 +2,9 @@ package routes
import (
"app/models/dto"
"app/models/repos"
"config"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
)
@ -27,7 +27,7 @@ var Profile = route.New(HttpGet, "/profile", func(x IContext) error {
func _() {}
var GetProfile = route.New(HttpGet, "/api/v1/profile", func(x IContext) error {
user, err := repos.FindUserById(x.GetUser())
user, err := repos.Default.FindUserById(x.GetUser())
if err != nil {
return x.Unauthorized(err)
}
@ -55,7 +55,7 @@ var UpdateProfile = route.New(HttpPost, "/api/v1/profile", func(x IContext) erro
return err
}
user, err := repos.FindUserById(x.GetUser())
user, err := repos.Default.FindUserById(x.GetUser())
if err != nil {
return x.Unauthorized(err)
}
@ -65,7 +65,7 @@ var UpdateProfile = route.New(HttpPost, "/api/v1/profile", func(x IContext) erro
access = repos.ACCESS_PRIVATE
}
if err := repos.UpdateProfile(user.ID,
if err := repos.Default.UpdateProfile(user.ID,
Values{
"display_name": body.DisplayName,
"bio": body.Bio,

Wyświetl plik

@ -2,8 +2,8 @@ package routes
import (
"app/models/dto"
"app/models/repos"
. "contracts"
"db/repos"
"encoding/json"
"server/route"
"utility"
@ -26,7 +26,7 @@ var Signup = route.New(HttpPost, "/api/v1/signup", func(x IContext) error {
return err
}
if _, err := repos.FindUserByEmail(body.Email); err == nil {
if _, err := repos.Default.FindUserByEmail(body.Email); err == nil {
return x.Conflict("email already exists")
}
@ -95,7 +95,7 @@ var Verify = route.New(HttpPost, "/api/v1/verify", func(x IContext) error {
}
user := registration.user
if err := repos.CreateUser(user); err != nil {
if err := repos.Default.CreateUser(user); err != nil {
return x.Conflict(err)
}

Wyświetl plik

@ -2,9 +2,9 @@ package routes
import (
"app/models/domain"
"app/models/repos"
"config"
"contracts"
"db/repos"
"server/route"
)
@ -36,7 +36,7 @@ var User = route.New(contracts.HttpGet, "/u/:username", func(x contracts.IContex
return x.Activity(actor)
} else {
user, err := repos.FindUserByUsername(username.String())
user, err := repos.Default.FindUserByUsername(username.String())
if err != nil {
return err
}

Wyświetl plik

@ -1,9 +1,9 @@
package routes
import (
"app/models/repos"
"config"
. "contracts"
"db/repos"
"fmt"
"server/route"
)
@ -26,7 +26,7 @@ var WebFinger = route.New(HttpGet, "/.well-known/webfinger", func(x IContext) er
username := x.StringUtil().Replace(resource, "acct:", "", -1)
username = x.StringUtil().Replace(username, fmt.Sprintf("@%s", config.DOMAIN), "", -1)
user, err := repos.FindUserByUsername(username)
user, err := repos.Default.FindUserByUsername(username)
if err != nil {
return err
}

Wyświetl plik

@ -2,7 +2,6 @@ package repos
import (
"contracts"
"db"
"errors"
"github.com/gofiber/fiber/v2"
@ -20,8 +19,8 @@ type OutgoingActivity struct {
}
// CreateOutgoingActivity creates an activity entry in the outgoing activities table
func CreateOutgoingActivity(activity *OutgoingActivity) error {
if err := db.Executor.Create(activity).Error; err != nil {
func (repo *repository) CreateOutgoingActivity(activity *OutgoingActivity) error {
if err := repo.Storage.Create(activity).Error; err != nil {
return err
}
@ -30,9 +29,9 @@ func CreateOutgoingActivity(activity *OutgoingActivity) error {
// FindOutgoingActivity searches the outgoing activities table with the condition given
// and returns a single record.
func FindOutgoingActivity(conds ...interface{}) (*OutgoingActivity, error) {
func (repo *repository) FindOutgoingActivity(conds ...interface{}) (*OutgoingActivity, error) {
dest := &OutgoingActivity{}
if err := db.Executor.Model(&OutgoingActivity{}).Take(dest, conds...).Error; err != nil {
if err := repo.Storage.Model(&OutgoingActivity{}).Take(dest, conds...).Error; err != nil {
if errors.Is(err, gorm.ErrRecordNotFound) {
return nil, &fiber.Error{
Code: contracts.StatusNotFound,
@ -50,9 +49,9 @@ func FindOutgoingActivity(conds ...interface{}) (*OutgoingActivity, error) {
}
// FindOutgoingActivitiesByUser finds the activities posted by user
func FindOutgoingActivitiesByUser(userIden interface{}) ([]OutgoingActivity, error) {
func (repo *repository) FindOutgoingActivitiesByUser(userIden interface{}) ([]OutgoingActivity, error) {
result := &[]OutgoingActivity{}
if err := db.Executor.Model(&OutgoingActivity{}).Find(result, "`from` = ?", userIden).Error; err != nil {
if err := repo.Storage.Model(&OutgoingActivity{}).Find(result, "`from` = ?", userIden).Error; err != nil {
return *result, err
}
@ -60,11 +59,11 @@ func FindOutgoingActivitiesByUser(userIden interface{}) ([]OutgoingActivity, err
}
// FindOutgoingActivityById searches the outgoing activities table with the id given
func FindOutgoingActivityById(id uint) (*OutgoingActivity, error) {
return FindOutgoingActivity("id = ?", id)
func (repo *repository) FindOutgoingActivityById(id uint) (*OutgoingActivity, error) {
return repo.FindOutgoingActivity("id = ?", id)
}
// FindOutgoingActivityByGuid searches the outgoing activities table with the guid given
func FindOutgoingActivityByGuid(guid string) (*OutgoingActivity, error) {
return FindOutgoingActivity("guid = ?", guid)
func (repo *repository) FindOutgoingActivityByGuid(guid string) (*OutgoingActivity, error) {
return repo.FindOutgoingActivity("guid = ?", guid)
}

Wyświetl plik

@ -1,5 +1,7 @@
github.com/99designs/httpsignatures-go v0.0.0-20170731043157-88528bf4ca7e/go.mod h1:Xa6lInWHNQnuWoF0YPSsx+INFA9qk7/7pTjwb3PInkY=
github.com/go-fed/httpsig v1.1.0/go.mod h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
github.com/gofiber/fiber/v2 v2.38.1 h1:GEQ/Yt3Wsf2a30iTqtLXlBYJZso0JXPovt/tmj5H9jU=
github.com/gofiber/fiber/v2 v2.38.1/go.mod h1:t0NlbaXzuGH7I+7M4paE848fNWInZ7mfxI/Er1fTth8=
github.com/jackc/chunkreader v1.0.0 h1:4s39bBR8ByfqH+DKm8rQA3E1LHZWB9XWcrz8fqaZbe0=
github.com/jackc/pgproto3 v1.1.0 h1:FYYE4yRw+AgI8wXIinMlNjBbp/UitDJwfj5LqqewP1A=
github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0=