Eric Bower
·
2026-08-17
1package pgs
2
3import (
4 "fmt"
5 "strings"
6
7 pgsdb "github.com/picosh/pico/pkg/apps/pgs/db"
8 "github.com/picosh/pico/pkg/db"
9)
10
11func setFeatureLimits(ff *db.FeatureFlag, cfg *PgsConfig) {
12 ff.Data.StorageMax = ff.FindStorageMax(cfg.MaxSize)
13 ff.Data.FileMax = ff.FindFileMax(cfg.MaxAssetSize)
14 ff.Data.SpecialFileMax = ff.FindSpecialFileMax(cfg.MaxSpecialFileSize)
15}
16
17func findFeatureFlag(dbpool pgsdb.PgsDB, cfg *PgsConfig, userID string) (*db.FeatureFlag, error) {
18 ff, err := dbpool.FindFeature(userID, "plus")
19 if err == nil {
20 if ff.IsValid() {
21 setFeatureLimits(ff, cfg)
22 return ff, nil
23 }
24 err = fmt.Errorf("your pico+ has expired")
25 }
26
27 ffPgs, pgsErr := dbpool.FindFeature(userID, "pgs")
28 if pgsErr == nil {
29 if ffPgs.IsValid() {
30 setFeatureLimits(ffPgs, cfg)
31 return ffPgs, nil
32 }
33 pgsErr = fmt.Errorf("your pgs access has expired")
34 }
35
36 if err != nil && strings.Contains(err.Error(), "expired") {
37 return nil, err
38 }
39 if pgsErr != nil {
40 return nil, pgsErr
41 }
42 return nil, err
43}