| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- package schema
- import (
- "context"
- "time"
- "github.com/gravitl/netmaker/db"
- )
- const jitRequestTable = "jit_requests"
- type JITRequest struct {
- ID string `gorm:"primaryKey" json:"id"`
- NetworkID string `gorm:"network_id" json:"network_id"`
- UserID string `gorm:"user_id" json:"user_id"`
- UserName string `gorm:"user_name" json:"user_name"`
- Reason string `gorm:"reason" json:"reason"`
- Status string `gorm:"status" json:"status"` // pending, approved, denied, expired
- RevokedAt time.Time `gorm:"revoked_at" json:"revoked_at"`
- RequestedAt time.Time `gorm:"requested_at" json:"requested_at"`
- ApprovedAt time.Time `gorm:"approved_at" json:"approved_at,omitempty"`
- ApprovedBy string `gorm:"approved_by" json:"approved_by,omitempty"`
- DurationHours int `gorm:"duration_hours" json:"duration_hours,omitempty"`
- ExpiresAt time.Time `gorm:"expires_at" json:"expires_at,omitempty"`
- }
- func (r *JITRequest) Table() string {
- return jitRequestTable
- }
- func (r *JITRequest) Get(ctx context.Context) error {
- return db.FromContext(ctx).Table(r.Table()).Where("id = ?", r.ID).First(&r).Error
- }
- func (r *JITRequest) Create(ctx context.Context) error {
- return db.FromContext(ctx).Table(r.Table()).Create(&r).Error
- }
- func (r *JITRequest) Update(ctx context.Context) error {
- return db.FromContext(ctx).Table(r.Table()).Where("id = ?", r.ID).Updates(&r).Error
- }
- func (r *JITRequest) Delete(ctx context.Context) error {
- return db.FromContext(ctx).Table(r.Table()).Where("id = ?", r.ID).Delete(&r).Error
- }
- func (r *JITRequest) ListByNetwork(ctx context.Context) ([]JITRequest, error) {
- var requests []JITRequest
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ?", r.NetworkID).Order("requested_at DESC").Find(&requests).Error
- return requests, err
- }
- func (r *JITRequest) ListByUserAndNetwork(ctx context.Context) ([]JITRequest, error) {
- var requests []JITRequest
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ? AND user_id = ?", r.NetworkID, r.UserID).Find(&requests).Error
- return requests, err
- }
- func (r *JITRequest) ListPendingByNetwork(ctx context.Context) ([]JITRequest, error) {
- var requests []JITRequest
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ? AND status = ?", r.NetworkID, "pending").Find(&requests).Error
- return requests, err
- }
- func (r *JITRequest) ListByStatusAndNetwork(ctx context.Context, status string) ([]JITRequest, error) {
- var requests []JITRequest
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ? AND status = ?", r.NetworkID, status).Order("requested_at DESC").Find(&requests).Error
- return requests, err
- }
- func (r *JITRequest) CountByNetwork(ctx context.Context) (int64, error) {
- var count int64
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ?", r.NetworkID).Count(&count).Error
- return count, err
- }
- func (r *JITRequest) CountByStatusAndNetwork(ctx context.Context, status string) (int64, error) {
- var count int64
- err := db.FromContext(ctx).Table(r.Table()).Where("network_id = ? AND status = ?", r.NetworkID, status).Count(&count).Error
- return count, err
- }
|