+1
-9
cmd/cocoon/main.go
+1
-9
cmd/cocoon/main.go
···
163
163
Usage: "Start the cocoon PDS",
164
164
Flags: []cli.Flag{},
165
165
Action: func(cmd *cli.Context) error {
166
-
var bsv server.BlockstoreVariant
167
-
maybeBsv := cmd.String("blockstore-variant")
168
-
switch maybeBsv {
169
-
case "sqlite":
170
-
bsv = server.BlockstoreVariantSqlite
171
-
default:
172
-
panic("invalid blockstore variant!")
173
-
}
174
166
175
167
s, err := server.New(&server.Args{
176
168
Addr: cmd.String("addr"),
···
199
191
},
200
192
SessionSecret: cmd.String("session-secret"),
201
193
DefaultAtprotoProxy: cmd.String("default-atproto-proxy"),
202
-
BlockstoreVariant: bsv,
194
+
BlockstoreVariant: server.MustReturnBlockstoreVariant(cmd.String("blockstore-variant")),
203
195
})
204
196
if err != nil {
205
197
fmt.Printf("error creating cocoon: %v", err)
+23
server/blockstore_variant.go
+23
server/blockstore_variant.go
···
1
1
package server
2
2
3
+
import (
4
+
"github.com/haileyok/cocoon/sqlite_blockstore"
5
+
blockstore "github.com/ipfs/go-ipfs-blockstore"
6
+
)
7
+
3
8
type BlockstoreVariant int
4
9
5
10
const (
6
11
BlockstoreVariantSqlite = iota
7
12
)
13
+
14
+
func MustReturnBlockstoreVariant(maybeBsv string) BlockstoreVariant {
15
+
switch maybeBsv {
16
+
case "sqlite":
17
+
return BlockstoreVariantSqlite
18
+
default:
19
+
panic("invalid blockstore variant provided")
20
+
}
21
+
}
22
+
23
+
func (s *Server) getBlockstore(did string) blockstore.Blockstore {
24
+
switch s.config.BlockstoreVariant {
25
+
case BlockstoreVariantSqlite:
26
+
return sqlite_blockstore.New(did, s.db)
27
+
default:
28
+
return sqlite_blockstore.New(did, s.db)
29
+
}
30
+
}
+1
-1
server/handle_import_repo.go
+1
-1
server/handle_import_repo.go
+1
-1
server/handle_server_create_account.go
+1
-1
server/handle_server_create_account.go
+1
-1
server/handle_sync_get_blocks.go
+1
-1
server/handle_sync_get_blocks.go
+2
-2
server/repo.go
+2
-2
server/repo.go
···
102
102
return nil, err
103
103
}
104
104
105
-
dbs := rm.s.createBlockstore(urepo.Did)
105
+
dbs := rm.s.getBlockstore(urepo.Did)
106
106
bs := recording_blockstore.New(dbs)
107
107
r, err := repo.OpenRepo(context.TODO(), dbs, rootcid)
108
108
···
345
345
return cid.Undef, nil, err
346
346
}
347
347
348
-
dbs := rm.s.createBlockstore(urepo.Did)
348
+
dbs := rm.s.getBlockstore(urepo.Did)
349
349
bs := recording_blockstore.New(dbs)
350
350
351
351
r, err := repo.OpenRepo(context.TODO(), bs, c)
+2
-7
server/server.go
+2
-7
server/server.go
···
38
38
"github.com/haileyok/cocoon/oauth/dpop"
39
39
"github.com/haileyok/cocoon/oauth/provider"
40
40
"github.com/haileyok/cocoon/plc"
41
-
"github.com/haileyok/cocoon/sqlite_blockstore"
42
41
"github.com/ipfs/go-cid"
43
-
blockstore "github.com/ipfs/go-ipfs-blockstore"
44
42
echo_session "github.com/labstack/echo-contrib/session"
45
43
"github.com/labstack/echo/v4"
46
44
"github.com/labstack/echo/v4/middleware"
···
122
120
SmtpEmail string
123
121
SmtpName string
124
122
DefaultAtprotoProxy string
123
+
BlockstoreVariant BlockstoreVariant
125
124
}
126
125
127
126
type CustomValidator struct {
···
354
353
SmtpName: args.SmtpName,
355
354
SmtpEmail: args.SmtpEmail,
356
355
DefaultAtprotoProxy: args.DefaultAtprotoProxy,
356
+
BlockstoreVariant: args.BlockstoreVariant,
357
357
},
358
358
evtman: events.NewEventManager(events.NewMemPersister()),
359
359
passport: identity.NewPassport(h, identity.NewMemCache(10_000)),
···
645
645
for range ticker.C {
646
646
go s.doBackup()
647
647
}
648
-
}
649
-
650
-
func (s *Server) createBlockstore(did string) blockstore.Blockstore {
651
-
// TODO: eventually configurable blockstore types here
652
-
return sqlite_blockstore.New(did, s.db)
653
648
}
654
649
655
650
func (s *Server) UpdateRepo(ctx context.Context, did string, root cid.Cid, rev string) error {