Files
plane/monitor/cli/pkg/db/models.go

74 lines
3.2 KiB
Go
Raw Permalink Normal View History

dev: primev2 (#962) * dev: new license activation workflow for one and pro users (#739) * feat: added feature flag package for decrypting and refreshing the feature flags value * feat: added feature flagging route for route handlers * feat: added feature flag worker for managing and distributing feature flags * feat: implemented feature flag api implementation inside ff handler * feat: added exponential retry interval inside feature flagging * fix: route pattern of feature flag endpoint from monitor * feat: created endpoint to activate workspace from monitor * feat: made changes to accomodate db and activate endpoint * dev: update multi tenant environment settings * dev: workspace license activation flow * dev: update license activate endpoint * dev: update workspace license activate endpoint * feat: added feature flag user sync logic * feat: added constants and sync logic with private key inside * feat: added port as env variable * feat: added modification for removing license key in healthcheck * feat: example env pushed * fix: update monitor endpoints and license activation function * dev: initiate free workspace only for self hosted instances * dev: self hosting license endpoint updates * dev: remove monitor db * dev: update handlers * dev: self hosted license subscription web * dev: removed computed in self hosted subscription * fix: prime server url and delete old license while creating new license in sqlite * chore: subscription activation alert after successfull activation. * dev: update feature flag endpoints * fix: handled several cases of feature flags * fix: linting errors * dev: update monitor to handle workspace activation * dev: update decryption algorithm * feat: separated activation payload with the sync payload * dev: update feature flags endpoint * dev: change type for workspace sync * feat: added isActive flag for user activation * feat: removed creation of free users in monitor * feat: added method for workspace product * dev: add user email in types * feat: added method for workspace product * fix: uer license feature flag fetch * fix: handler fixed for feature key * chore: self managed license activation * chore: update validation license flow. * chore: license activation success. * dev: resync workspace license on activation * chore: plane one success modal. * feat: added constructs to inject private key build time * feat: updated the docker file with private key build argument * feat: added consumption od DEFAULT_PRIVATE_KEY when building monitor * dev: update private key --------- Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com> Co-authored-by: gurusainath <gurusainath007@gmail.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com> Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com> * fix: prime workflow fix for private key generation * dev: remove license check and update release notes * fix: build args for build ci (#916) * fix: GitHub ci build for monitor (#919) * fix: errors in github ci * fix: added base 64 private key * fix: instance register script * fixed monitor for CGO startup failure (#923) * chore: current plan api and server base urls * fix: monitor startup failure --------- Co-authored-by: pablohashescobar <nikhilschacko@gmail.com> * fix: monitor feature flagging (#926) * feat: added startup flag handler inside monitor (#927) * feat: added logs for debugging (#929) * fix: parsing of private key with base64 (#932) * fix: private key parsing for monitor (#934) * fix: throw error if private key is not parsable * fix: printing private key * fix: added print of private key in handler * feat: optimized build for monitor * feat: removed debug statements * feat: added volume for compose * fix: monitor build issues (#935) * fix: success modal fix for self hosted users. (#928) * feat: Added refresh worker job inside monitor for refreshing licenses (#937) * dev: add instance validation endpoints * feat: added startup refresh handler for getting new licenses * feat: updated title --------- Co-authored-by: pablohashescobar <nikhilschacko@gmail.com> * chore: clear workspace license on restart (#939) * fix: product check endpoint for license creation (#941) * feat: added constraints for db models in monitor (#946) * feat: added constraints for db models in monitor * feat: updated constraints * fix: model constraint for db (#948) * fix: one users need to be active for sync (#950) * fix: one users need to be active for sync * fix: added isolation for files for handlers * fix: workspace offline activation for syncing users * fix: update license over syncing in monitor (#954) --------- Co-authored-by: Henit Chobisa <chobisa.henit@gmail.com> Co-authored-by: gurusainath <gurusainath007@gmail.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com> Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com> Co-authored-by: pushya22 <130810100+pushya22@users.noreply.github.com>
2024-08-27 19:22:27 +05:30
package db
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
type License struct {
ID uuid.UUID `json:"id" gorm:"primaryKey;type:uuid"`
LicenseKey string `json:"license_key" gorm:"not null;uniqueIndex:idx_workspace_license"`
InstanceID uuid.UUID `json:"instance_id" gorm:"type:uuid"`
WorkspaceID uuid.UUID `json:"workspace_id" gorm:"type:uuid;not null;unique;uniqueIndex:idx_workspace_license"`
Product string `json:"product" gorm:"not null"`
ProductType string `json:"product_type" gorm:"not null"`
WorkspaceSlug string `json:"workspace_slug" gorm:"not null;unique"`
Seats int `json:"seats" gorm:"not null;default:0"`
FreeSeats int `json:"free_seats" gorm:"not null;default:12"`
CurrentPeriodEndDate *time.Time `json:"current_period_end_date"`
IsCancelled bool `json:"is_cancelled" gorm:"not null;default:false"`
Interval string `json:"interval"`
IsOfflinePayment bool `json:"is_offline_payment" gorm:"not null;default:false"`
TrialEndDate *time.Time `json:"trial_end_date"`
HasAddedPaymentMethod bool `json:"has_added_payment_method" gorm:"not null;default:false"`
HasActivatedFreeTrial bool `json:"has_activated_free_trial" gorm:"not null;default:false"`
Subscription string `json:"subscription" gorm:"not null"`
// time stamps
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
func (license *License) BeforeCreate(scope *gorm.DB) error {
license.ID = uuid.New()
return nil
}
type UserLicense struct {
ID uuid.UUID `json:"id" gorm:"primaryKey;type:uuid"`
LicenseID uuid.UUID `json:"license_id" gorm:"type:uuid;not null"`
License License `json:"license" gorm:"foreignKey:LicenseID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
UserID uuid.UUID `json:"user_id" gorm:"type:uuid;not null"`
Role int `json:"role" gorm:"not null"`
Synced bool `json:"synced" gorm:"not null;default:false"`
IsActive bool `json:"is_active" gorm:"not null;default:false"`
// time stamps
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
func (userLicense *UserLicense) BeforeCreate(scope *gorm.DB) error {
userLicense.ID = uuid.New()
return nil
}
type Flags struct {
ID uuid.UUID `json:"id" gorm:"primaryKey;type:uuid"`
LicenseID uuid.UUID `json:"license_id" gorm:"type:uuid;not null"`
License License `json:"license" gorm:"foreignKey:LicenseID;constraint:OnUpdate:CASCADE,OnDelete:CASCADE"`
Version string `json:"version" gorm:"not null"`
AesKey string `json:"aes_key" gorm:"not null"`
Nonce string `json:"nonce" gorm:"not null"`
CipherText string `json:"cipher_text" gorm:"not null"`
Tag string `json:"tag" gorm:"not null"`
// time stamps
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime"`
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime"`
}
func (flags *Flags) BeforeCreate(scope *gorm.DB) error {
flags.ID = uuid.New()
return nil
}