kopia lustrzana https://github.com/reiver/greatape
refactor(app): ♻️ use new repository
rodzic
712564dada
commit
d308a33f37
|
@ -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
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -2,11 +2,11 @@ package main
|
|||
|
||||
import (
|
||||
"app/docs"
|
||||
"app/models/repos"
|
||||
"app/routes"
|
||||
"caching"
|
||||
"config"
|
||||
"db"
|
||||
"db/repos"
|
||||
"fmt"
|
||||
"logging"
|
||||
"server"
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
package repos
|
||||
|
||||
var All = []interface{}{
|
||||
&User{},
|
||||
&IncomingActivity{},
|
||||
&OutgoingActivity{},
|
||||
&Follower{},
|
||||
&Following{},
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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
|
||||
}
|
|
@ -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)
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -2,8 +2,8 @@ package routes
|
|||
|
||||
import (
|
||||
"activitypub"
|
||||
"app/models/repos"
|
||||
"config"
|
||||
"db/repos"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"server/mime"
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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")
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
|
@ -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=
|
||||
|
|
Ładowanie…
Reference in New Issue