@brimble/models 3.8.43 → 3.8.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -261,3 +261,11 @@ export declare enum StorageTokenStatus {
261
261
  Active = "active",
262
262
  Revoked = "revoked"
263
263
  }
264
+ export declare enum StorageCredentialRole {
265
+ ReadOnly = "ReadOnly",
266
+ Editor = "Editor"
267
+ }
268
+ export declare enum StorageCredentialStatus {
269
+ Active = "active",
270
+ Revoked = "revoked"
271
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StorageTokenStatus = exports.StorageUploadStatus = exports.StorageBucketStatus = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_DESTROY_REASON = exports.SANDBOX_STATUS = exports.SANDBOX_TEMPLATE = exports.INVOICE_TYPE = exports.INVOICE_PAYMENT_STATUS = exports.INVOICE_STATUS = exports.COLLAB_TOOLBAR_POSITION = exports.COLLAB_THEME = exports.COLLAB_INTEGRATION_TYPE = exports.COLLAB_ANNOTATION_STATUS = exports.NomadDeploymentStatus = exports.DomainTransferStatus = exports.DomainTransferDirection = exports.DomainTransferProvider = exports.DomainRenewalStatus = exports.FrameworkApplicationType = exports.SCALING_METRIC = exports.SCALING_STRATEGY = exports.LicenseStatus = exports.JobStatus = exports.DatabaseEngine = exports.ServiceType = exports.REGION_CONTINENT = exports.PERMISSION_TYPE = exports.ROLES = exports.DNS_TYPE = exports.SERVER_STATUS = exports.OAUTH_PERMISSIONS = exports.SUBSCRIPTION_PLAN_TYPE = exports.SUBSCRIPTION_STATUS = exports.PROJECT_STATUS = exports.CARD_TYPES = exports.INTEGRATION_PROVIDERS = exports.INTEGRATION_TYPES = exports.ENVIRONMENT = exports.REQUEST_TYPE = exports.BUILD_DISABLED_BY = exports.SERVER_PROTOCOL = exports.GIT_TYPE = void 0;
3
+ exports.StorageCredentialStatus = exports.StorageCredentialRole = exports.StorageTokenStatus = exports.StorageUploadStatus = exports.StorageBucketStatus = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_DESTROY_REASON = exports.SANDBOX_STATUS = exports.SANDBOX_TEMPLATE = exports.INVOICE_TYPE = exports.INVOICE_PAYMENT_STATUS = exports.INVOICE_STATUS = exports.COLLAB_TOOLBAR_POSITION = exports.COLLAB_THEME = exports.COLLAB_INTEGRATION_TYPE = exports.COLLAB_ANNOTATION_STATUS = exports.NomadDeploymentStatus = exports.DomainTransferStatus = exports.DomainTransferDirection = exports.DomainTransferProvider = exports.DomainRenewalStatus = exports.FrameworkApplicationType = exports.SCALING_METRIC = exports.SCALING_STRATEGY = exports.LicenseStatus = exports.JobStatus = exports.DatabaseEngine = exports.ServiceType = exports.REGION_CONTINENT = exports.PERMISSION_TYPE = exports.ROLES = exports.DNS_TYPE = exports.SERVER_STATUS = exports.OAUTH_PERMISSIONS = exports.SUBSCRIPTION_PLAN_TYPE = exports.SUBSCRIPTION_STATUS = exports.PROJECT_STATUS = exports.CARD_TYPES = exports.INTEGRATION_PROVIDERS = exports.INTEGRATION_TYPES = exports.ENVIRONMENT = exports.REQUEST_TYPE = exports.BUILD_DISABLED_BY = exports.SERVER_PROTOCOL = exports.GIT_TYPE = void 0;
4
4
  var GIT_TYPE;
5
5
  (function (GIT_TYPE) {
6
6
  GIT_TYPE["GITHUB"] = "GITHUB";
@@ -307,3 +307,13 @@ var StorageTokenStatus;
307
307
  StorageTokenStatus["Active"] = "active";
308
308
  StorageTokenStatus["Revoked"] = "revoked";
309
309
  })(StorageTokenStatus || (exports.StorageTokenStatus = StorageTokenStatus = {}));
310
+ var StorageCredentialRole;
311
+ (function (StorageCredentialRole) {
312
+ StorageCredentialRole["ReadOnly"] = "ReadOnly";
313
+ StorageCredentialRole["Editor"] = "Editor";
314
+ })(StorageCredentialRole || (exports.StorageCredentialRole = StorageCredentialRole = {}));
315
+ var StorageCredentialStatus;
316
+ (function (StorageCredentialStatus) {
317
+ StorageCredentialStatus["Active"] = "active";
318
+ StorageCredentialStatus["Revoked"] = "revoked";
319
+ })(StorageCredentialStatus || (exports.StorageCredentialStatus = StorageCredentialStatus = {}));
package/dist/index.d.ts CHANGED
@@ -62,9 +62,9 @@ export { default as SandboxUsageSegment } from "./sandbox-usage-segment";
62
62
  export { default as VolumeUsageSegment } from "./volume-usage-segment";
63
63
  export { default as ObjectStorageUsageSegment } from "./object-storage-usage-segment";
64
64
  export { default as IdempotencyRecord } from "./idempotency";
65
- export { StorageBucket, StorageObject, StorageUpload, StorageToken } from "./storage";
66
- export { IUser, IGit, IProject, IProjectAnalytics, IPreview, IProjectConnection, IFollowing, IIntegration, IEnv, IServer, IDomain, IToken, IMember, ITeam, IInstalledIntegration, ILog, ISubscription, ICard, IDns, IRole, IPermission, IMemberPermission, IWallet, IDbImage, IJob, ILicense, IPlanConfiguration, IAutoScalingGroup, IComputeChange, IRegion, IVolume, IFramework, BrimbleFrameworkType, ISettings, ILoadBalancerPort, IDomainRenewal, IDomainTransfer, IWebhookCategory, IWebhookEvent, IWebhookSetting, IIntention, IProvider, ICollabAnnotation, ICollabComment, ICollabAttachment, ICollabIntegration, ICollabSettings, ICollabShareToken, ICollabPushSubscription, IAppMessage, IInvoice, ITag, IProjectTagAssignment, ICashierSubscription, ICashierSubscriptionItem, IProjectEnvironment, IEnvironmentVariable, IActivityLog, IOwnershipTransfer, ISandbox, ISandboxSpecs, ISandboxActivity, ISandboxImage, ISandboxSnapshot, ISandboxSnapshotUsageSegment, ISandboxSnapshotUsageSegmentCosts, ISandboxUsageSegment, ISandboxUsageSegmentCurrent, ISandboxUsageSegmentCosts, IVolumeUsageSegment, IVolumeUsageSegmentCosts, IObjectStorageUsageSegment, IObjectStorageUsageSegmentCosts, IObjectStorageUsageUnitsSummary, IIdempotencyRecord, IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, StorageTokenPermission, } from "./types";
67
- export { GIT_TYPE, INTEGRATION_TYPES, INTEGRATION_PROVIDERS, OAUTH_PERMISSIONS, ENVIRONMENT, SERVER_STATUS, ROLES, SUBSCRIPTION_PLAN_TYPE, PROJECT_STATUS, SUBSCRIPTION_STATUS, CARD_TYPES, DNS_TYPE, PERMISSION_TYPE, REQUEST_TYPE, ServiceType, DatabaseEngine, JobStatus, LicenseStatus, REGION_CONTINENT, BUILD_DISABLED_BY, SERVER_PROTOCOL, FrameworkApplicationType, DomainRenewalStatus, DomainTransferProvider, DomainTransferDirection, DomainTransferStatus, NomadDeploymentStatus, COLLAB_ANNOTATION_STATUS, COLLAB_INTEGRATION_TYPE, COLLAB_THEME, COLLAB_TOOLBAR_POSITION, INVOICE_STATUS, INVOICE_PAYMENT_STATUS, INVOICE_TYPE, SANDBOX_TEMPLATE, SANDBOX_STATUS, SANDBOX_DESTROY_REASON, SANDBOX_SNAPSHOT_STATUS, StorageBucketStatus, StorageUploadStatus, StorageTokenStatus, } from "./enum";
65
+ export { StorageBucket, StorageObject, StorageUpload, StorageToken, StorageCredential } from "./storage";
66
+ export { IUser, IGit, IProject, IProjectAnalytics, IPreview, IProjectConnection, IFollowing, IIntegration, IEnv, IServer, IDomain, IToken, IMember, ITeam, IInstalledIntegration, ILog, ISubscription, ICard, IDns, IRole, IPermission, IMemberPermission, IWallet, IDbImage, IJob, ILicense, IPlanConfiguration, IAutoScalingGroup, IComputeChange, IRegion, IVolume, IFramework, BrimbleFrameworkType, ISettings, ILoadBalancerPort, IDomainRenewal, IDomainTransfer, IWebhookCategory, IWebhookEvent, IWebhookSetting, IIntention, IProvider, ICollabAnnotation, ICollabComment, ICollabAttachment, ICollabIntegration, ICollabSettings, ICollabShareToken, ICollabPushSubscription, IAppMessage, IInvoice, ITag, IProjectTagAssignment, ICashierSubscription, ICashierSubscriptionItem, IProjectEnvironment, IEnvironmentVariable, IActivityLog, IOwnershipTransfer, ISandbox, ISandboxSpecs, ISandboxActivity, ISandboxImage, ISandboxSnapshot, ISandboxSnapshotUsageSegment, ISandboxSnapshotUsageSegmentCosts, ISandboxUsageSegment, ISandboxUsageSegmentCurrent, ISandboxUsageSegmentCosts, IVolumeUsageSegment, IVolumeUsageSegmentCosts, IObjectStorageUsageSegment, IObjectStorageUsageSegmentCosts, IObjectStorageUsageUnitsSummary, IIdempotencyRecord, IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, IStorageCredential, StorageTokenPermission, } from "./types";
67
+ export { GIT_TYPE, INTEGRATION_TYPES, INTEGRATION_PROVIDERS, OAUTH_PERMISSIONS, ENVIRONMENT, SERVER_STATUS, ROLES, SUBSCRIPTION_PLAN_TYPE, PROJECT_STATUS, SUBSCRIPTION_STATUS, CARD_TYPES, DNS_TYPE, PERMISSION_TYPE, REQUEST_TYPE, ServiceType, DatabaseEngine, JobStatus, LicenseStatus, REGION_CONTINENT, BUILD_DISABLED_BY, SERVER_PROTOCOL, FrameworkApplicationType, DomainRenewalStatus, DomainTransferProvider, DomainTransferDirection, DomainTransferStatus, NomadDeploymentStatus, COLLAB_ANNOTATION_STATUS, COLLAB_INTEGRATION_TYPE, COLLAB_THEME, COLLAB_TOOLBAR_POSITION, INVOICE_STATUS, INVOICE_PAYMENT_STATUS, INVOICE_TYPE, SANDBOX_TEMPLATE, SANDBOX_STATUS, SANDBOX_DESTROY_REASON, SANDBOX_SNAPSHOT_STATUS, StorageBucketStatus, StorageUploadStatus, StorageTokenStatus, StorageCredentialRole, StorageCredentialStatus, } from "./enum";
68
68
  import mongoose from "mongoose";
69
69
  export declare const connectToMongo: (mongoUrl: string, config?: mongoose.ConnectOptions) => Promise<void>;
70
70
  export declare const db: mongoose.Connection;
package/dist/index.js CHANGED
@@ -13,8 +13,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.ProjectTagAssignment = exports.Tag = exports.Invoice = exports.AppMessage = exports.CollabPushSubscription = exports.CollabShareToken = exports.CollabSettings = exports.CollabIntegration = exports.CollabComment = exports.CollabAnnotation = exports.Provider = exports.Intention = exports.WebhookSetting = exports.WebhookEvent = exports.WebhookCategory = exports.DomainTransfer = exports.DomainRenewal = exports.LoadBalancerPort = exports.Settings = exports.Framework = exports.Volume = exports.Region = exports.ComputeChange = exports.AutoScalingGroup = exports.PlanConfiguration = exports.Liscense = exports.Job = exports.DbImage = exports.Wallet = exports.Server = exports.Card = exports.Subscription = exports.Log = exports.Role = exports.MemberPermission = exports.Permission = exports.Member = exports.Team = exports.Token = exports.Env = exports.Dns = exports.Domain = exports.Integration = exports.Following = exports.ProjectConnection = exports.Preview = exports.ProjectAnalytics = exports.DeletedProject = exports.Project = exports.User = void 0;
16
- exports.COLLAB_TOOLBAR_POSITION = exports.COLLAB_THEME = exports.COLLAB_INTEGRATION_TYPE = exports.COLLAB_ANNOTATION_STATUS = exports.NomadDeploymentStatus = exports.DomainTransferStatus = exports.DomainTransferDirection = exports.DomainTransferProvider = exports.DomainRenewalStatus = exports.FrameworkApplicationType = exports.SERVER_PROTOCOL = exports.BUILD_DISABLED_BY = exports.REGION_CONTINENT = exports.LicenseStatus = exports.JobStatus = exports.DatabaseEngine = exports.ServiceType = exports.REQUEST_TYPE = exports.PERMISSION_TYPE = exports.DNS_TYPE = exports.CARD_TYPES = exports.SUBSCRIPTION_STATUS = exports.PROJECT_STATUS = exports.SUBSCRIPTION_PLAN_TYPE = exports.ROLES = exports.SERVER_STATUS = exports.ENVIRONMENT = exports.OAUTH_PERMISSIONS = exports.INTEGRATION_PROVIDERS = exports.INTEGRATION_TYPES = exports.GIT_TYPE = exports.StorageToken = exports.StorageUpload = exports.StorageObject = exports.StorageBucket = exports.IdempotencyRecord = exports.ObjectStorageUsageSegment = exports.VolumeUsageSegment = exports.SandboxUsageSegment = exports.SandboxSnapshotUsageSegment = exports.SandboxSnapshot = exports.SandboxImage = exports.SandboxActivity = exports.Sandbox = exports.OwnershipTransfer = exports.ActivityLog = exports.EnvironmentVariable = exports.ProjectEnvironment = exports.CashierSubscriptionItem = exports.CashierSubscription = void 0;
17
- exports.healthCheckMongo = exports.closeMongo = exports.db = exports.connectToMongo = exports.StorageTokenStatus = exports.StorageUploadStatus = exports.StorageBucketStatus = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_DESTROY_REASON = exports.SANDBOX_STATUS = exports.SANDBOX_TEMPLATE = exports.INVOICE_TYPE = exports.INVOICE_PAYMENT_STATUS = exports.INVOICE_STATUS = void 0;
16
+ exports.COLLAB_THEME = exports.COLLAB_INTEGRATION_TYPE = exports.COLLAB_ANNOTATION_STATUS = exports.NomadDeploymentStatus = exports.DomainTransferStatus = exports.DomainTransferDirection = exports.DomainTransferProvider = exports.DomainRenewalStatus = exports.FrameworkApplicationType = exports.SERVER_PROTOCOL = exports.BUILD_DISABLED_BY = exports.REGION_CONTINENT = exports.LicenseStatus = exports.JobStatus = exports.DatabaseEngine = exports.ServiceType = exports.REQUEST_TYPE = exports.PERMISSION_TYPE = exports.DNS_TYPE = exports.CARD_TYPES = exports.SUBSCRIPTION_STATUS = exports.PROJECT_STATUS = exports.SUBSCRIPTION_PLAN_TYPE = exports.ROLES = exports.SERVER_STATUS = exports.ENVIRONMENT = exports.OAUTH_PERMISSIONS = exports.INTEGRATION_PROVIDERS = exports.INTEGRATION_TYPES = exports.GIT_TYPE = exports.StorageCredential = exports.StorageToken = exports.StorageUpload = exports.StorageObject = exports.StorageBucket = exports.IdempotencyRecord = exports.ObjectStorageUsageSegment = exports.VolumeUsageSegment = exports.SandboxUsageSegment = exports.SandboxSnapshotUsageSegment = exports.SandboxSnapshot = exports.SandboxImage = exports.SandboxActivity = exports.Sandbox = exports.OwnershipTransfer = exports.ActivityLog = exports.EnvironmentVariable = exports.ProjectEnvironment = exports.CashierSubscriptionItem = exports.CashierSubscription = void 0;
17
+ exports.healthCheckMongo = exports.closeMongo = exports.db = exports.connectToMongo = exports.StorageCredentialStatus = exports.StorageCredentialRole = exports.StorageTokenStatus = exports.StorageUploadStatus = exports.StorageBucketStatus = exports.SANDBOX_SNAPSHOT_STATUS = exports.SANDBOX_DESTROY_REASON = exports.SANDBOX_STATUS = exports.SANDBOX_TEMPLATE = exports.INVOICE_TYPE = exports.INVOICE_PAYMENT_STATUS = exports.INVOICE_STATUS = exports.COLLAB_TOOLBAR_POSITION = void 0;
18
18
  var user_1 = require("./user");
19
19
  Object.defineProperty(exports, "User", { enumerable: true, get: function () { return __importDefault(user_1).default; } });
20
20
  var project_1 = require("./project");
@@ -149,6 +149,7 @@ Object.defineProperty(exports, "StorageBucket", { enumerable: true, get: functio
149
149
  Object.defineProperty(exports, "StorageObject", { enumerable: true, get: function () { return storage_1.StorageObject; } });
150
150
  Object.defineProperty(exports, "StorageUpload", { enumerable: true, get: function () { return storage_1.StorageUpload; } });
151
151
  Object.defineProperty(exports, "StorageToken", { enumerable: true, get: function () { return storage_1.StorageToken; } });
152
+ Object.defineProperty(exports, "StorageCredential", { enumerable: true, get: function () { return storage_1.StorageCredential; } });
152
153
  var enum_1 = require("./enum");
153
154
  Object.defineProperty(exports, "GIT_TYPE", { enumerable: true, get: function () { return enum_1.GIT_TYPE; } });
154
155
  Object.defineProperty(exports, "INTEGRATION_TYPES", { enumerable: true, get: function () { return enum_1.INTEGRATION_TYPES; } });
@@ -191,6 +192,8 @@ Object.defineProperty(exports, "SANDBOX_SNAPSHOT_STATUS", { enumerable: true, ge
191
192
  Object.defineProperty(exports, "StorageBucketStatus", { enumerable: true, get: function () { return enum_1.StorageBucketStatus; } });
192
193
  Object.defineProperty(exports, "StorageUploadStatus", { enumerable: true, get: function () { return enum_1.StorageUploadStatus; } });
193
194
  Object.defineProperty(exports, "StorageTokenStatus", { enumerable: true, get: function () { return enum_1.StorageTokenStatus; } });
195
+ Object.defineProperty(exports, "StorageCredentialRole", { enumerable: true, get: function () { return enum_1.StorageCredentialRole; } });
196
+ Object.defineProperty(exports, "StorageCredentialStatus", { enumerable: true, get: function () { return enum_1.StorageCredentialStatus; } });
194
197
  const mongoose_1 = __importDefault(require("mongoose"));
195
198
  const utils_1 = require("@brimble/utils");
196
199
  const connectToMongo = (mongoUrl, config) => __awaiter(void 0, void 0, void 0, function* () {
package/dist/storage.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IStorageBucket, IStorageObject, IStorageToken, IStorageUpload } from "./types/storage";
1
+ import { IStorageBucket, IStorageCredential, IStorageObject, IStorageToken, IStorageUpload } from "./types/storage";
2
2
  export declare const StorageBucket: import("mongoose").Model<IStorageBucket, {}, {}, {}, import("mongoose").Document<unknown, {}, IStorageBucket, {}, import("mongoose").DefaultSchemaOptions> & IStorageBucket & Required<{
3
3
  _id: import("mongoose").Types.ObjectId;
4
4
  }> & {
@@ -27,3 +27,10 @@ export declare const StorageToken: import("mongoose").Model<IStorageToken, {}, {
27
27
  } & {
28
28
  id: string;
29
29
  }, any, IStorageToken>;
30
+ export declare const StorageCredential: import("mongoose").Model<IStorageCredential, {}, {}, {}, import("mongoose").Document<unknown, {}, IStorageCredential, {}, import("mongoose").DefaultSchemaOptions> & IStorageCredential & Required<{
31
+ _id: import("mongoose").Types.ObjectId;
32
+ }> & {
33
+ __v: number;
34
+ } & {
35
+ id: string;
36
+ }, any, IStorageCredential>;
package/dist/storage.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.StorageToken = exports.StorageUpload = exports.StorageObject = exports.StorageBucket = void 0;
3
+ exports.StorageCredential = exports.StorageToken = exports.StorageUpload = exports.StorageObject = exports.StorageBucket = void 0;
4
4
  const mongoose_1 = require("mongoose");
5
5
  const enum_1 = require("./enum");
6
6
  const storageBucketSchema = new mongoose_1.Schema({
@@ -59,7 +59,24 @@ const storageTokenSchema = new mongoose_1.Schema({
59
59
  expires_at: { type: Date },
60
60
  }, { timestamps: true });
61
61
  storageTokenSchema.index({ project: 1, status: 1 }, { name: "idx_storage_token_project_status" });
62
+ const storageCredentialSchema = new mongoose_1.Schema({
63
+ name: { type: String, required: true, trim: true },
64
+ bucket: { type: mongoose_1.Schema.Types.ObjectId, ref: "StorageBucket", required: true, index: true },
65
+ project: { type: mongoose_1.Schema.Types.ObjectId, ref: "Project", required: false, index: true },
66
+ user_id: { type: mongoose_1.Schema.Types.ObjectId, ref: "User", required: false, index: true },
67
+ team: { type: mongoose_1.Schema.Types.ObjectId, ref: "Team", required: false, index: true },
68
+ provider: { type: String, default: "tigris" },
69
+ provider_org_id: { type: String, required: true },
70
+ access_key_id: { type: String, required: true, unique: true },
71
+ policy_names: [{ type: String }],
72
+ role: { type: String, enum: Object.values(enum_1.StorageCredentialRole), required: true },
73
+ status: { type: String, enum: Object.values(enum_1.StorageCredentialStatus), default: enum_1.StorageCredentialStatus.Active, index: true },
74
+ last_rotated_at: { type: Date },
75
+ revoked_at: { type: Date },
76
+ }, { timestamps: true });
77
+ storageCredentialSchema.index({ bucket: 1, status: 1, updatedAt: -1 }, { name: "idx_storage_credential_bucket_status_updated_at" });
62
78
  exports.StorageBucket = (0, mongoose_1.model)("StorageBucket", storageBucketSchema);
63
79
  exports.StorageObject = (0, mongoose_1.model)("StorageObject", storageObjectSchema);
64
80
  exports.StorageUpload = (0, mongoose_1.model)("StorageUpload", storageUploadSchema);
65
81
  exports.StorageToken = (0, mongoose_1.model)("StorageToken", storageTokenSchema);
82
+ exports.StorageCredential = (0, mongoose_1.model)("StorageCredential", storageCredentialSchema);
@@ -63,4 +63,4 @@ export type { ISandboxUsageSegment, ISandboxUsageSegmentCurrent, ISandboxUsageSe
63
63
  export type { IVolumeUsageSegment, IVolumeUsageSegmentCosts, } from "./volume-usage-segment";
64
64
  export type { IObjectStorageUsageSegment, IObjectStorageUsageSegmentCosts, IObjectStorageUsageUnitsSummary, } from "./object-storage-usage-segment";
65
65
  export type { IIdempotencyRecord } from "./idempotency";
66
- export type { IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, StorageTokenPermission, } from "./storage";
66
+ export type { IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, IStorageCredential, StorageTokenPermission, } from "./storage";
@@ -1,5 +1,5 @@
1
1
  import { Document, Types } from "mongoose";
2
- import { StorageBucketStatus, StorageTokenStatus, StorageUploadStatus } from "../enum";
2
+ import { StorageBucketStatus, StorageCredentialRole, StorageCredentialStatus, StorageTokenStatus, StorageUploadStatus } from "../enum";
3
3
  export type StorageTokenPermission = "read" | "write" | "delete" | "list" | "admin";
4
4
  export interface IStorageBucket extends Document {
5
5
  name: string;
@@ -60,3 +60,20 @@ export interface IStorageToken extends Document {
60
60
  createdAt: Date;
61
61
  updatedAt: Date;
62
62
  }
63
+ export interface IStorageCredential extends Document {
64
+ name: string;
65
+ bucket: Types.ObjectId;
66
+ project?: Types.ObjectId;
67
+ user_id?: Types.ObjectId;
68
+ team?: Types.ObjectId;
69
+ provider: string;
70
+ provider_org_id: string;
71
+ access_key_id: string;
72
+ policy_names: string[];
73
+ role: StorageCredentialRole;
74
+ status: StorageCredentialStatus;
75
+ last_rotated_at?: Date;
76
+ revoked_at?: Date;
77
+ createdAt: Date;
78
+ updatedAt: Date;
79
+ }
package/enum/index.ts CHANGED
@@ -303,3 +303,13 @@ export enum StorageTokenStatus {
303
303
  Active = "active",
304
304
  Revoked = "revoked",
305
305
  }
306
+
307
+ export enum StorageCredentialRole {
308
+ ReadOnly = "ReadOnly",
309
+ Editor = "Editor",
310
+ }
311
+
312
+ export enum StorageCredentialStatus {
313
+ Active = "active",
314
+ Revoked = "revoked",
315
+ }
package/index.ts CHANGED
@@ -62,7 +62,7 @@ export { default as SandboxUsageSegment } from "./sandbox-usage-segment";
62
62
  export { default as VolumeUsageSegment } from "./volume-usage-segment";
63
63
  export { default as ObjectStorageUsageSegment } from "./object-storage-usage-segment";
64
64
  export { default as IdempotencyRecord } from "./idempotency";
65
- export { StorageBucket, StorageObject, StorageUpload, StorageToken } from "./storage";
65
+ export { StorageBucket, StorageObject, StorageUpload, StorageToken, StorageCredential } from "./storage";
66
66
 
67
67
  export {
68
68
  IUser,
@@ -144,6 +144,7 @@ export {
144
144
  IStorageObject,
145
145
  IStorageUpload,
146
146
  IStorageToken,
147
+ IStorageCredential,
147
148
  StorageTokenPermission,
148
149
  } from "./types";
149
150
  export {
@@ -188,6 +189,8 @@ export {
188
189
  StorageBucketStatus,
189
190
  StorageUploadStatus,
190
191
  StorageTokenStatus,
192
+ StorageCredentialRole,
193
+ StorageCredentialStatus,
191
194
  } from "./enum";
192
195
 
193
196
  import mongoose from "mongoose";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brimble/models",
3
- "version": "3.8.43",
3
+ "version": "3.8.44",
4
4
  "description": "Brimble models",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/storage.ts CHANGED
@@ -1,6 +1,18 @@
1
1
  import { model, Schema } from "mongoose";
2
- import { StorageBucketStatus, StorageTokenStatus, StorageUploadStatus } from "./enum";
3
- import { IStorageBucket, IStorageObject, IStorageToken, IStorageUpload } from "./types/storage";
2
+ import {
3
+ StorageBucketStatus,
4
+ StorageCredentialRole,
5
+ StorageCredentialStatus,
6
+ StorageTokenStatus,
7
+ StorageUploadStatus,
8
+ } from "./enum";
9
+ import {
10
+ IStorageBucket,
11
+ IStorageCredential,
12
+ IStorageObject,
13
+ IStorageToken,
14
+ IStorageUpload,
15
+ } from "./types/storage";
4
16
 
5
17
  const storageBucketSchema = new Schema(
6
18
  {
@@ -77,7 +89,29 @@ const storageTokenSchema = new Schema(
77
89
 
78
90
  storageTokenSchema.index({ project: 1, status: 1 }, { name: "idx_storage_token_project_status" });
79
91
 
92
+ const storageCredentialSchema = new Schema(
93
+ {
94
+ name: { type: String, required: true, trim: true },
95
+ bucket: { type: Schema.Types.ObjectId, ref: "StorageBucket", required: true, index: true },
96
+ project: { type: Schema.Types.ObjectId, ref: "Project", required: false, index: true },
97
+ user_id: { type: Schema.Types.ObjectId, ref: "User", required: false, index: true },
98
+ team: { type: Schema.Types.ObjectId, ref: "Team", required: false, index: true },
99
+ provider: { type: String, default: "tigris" },
100
+ provider_org_id: { type: String, required: true },
101
+ access_key_id: { type: String, required: true, unique: true },
102
+ policy_names: [{ type: String }],
103
+ role: { type: String, enum: Object.values(StorageCredentialRole), required: true },
104
+ status: { type: String, enum: Object.values(StorageCredentialStatus), default: StorageCredentialStatus.Active, index: true },
105
+ last_rotated_at: { type: Date },
106
+ revoked_at: { type: Date },
107
+ },
108
+ { timestamps: true },
109
+ );
110
+
111
+ storageCredentialSchema.index({ bucket: 1, status: 1, updatedAt: -1 }, { name: "idx_storage_credential_bucket_status_updated_at" });
112
+
80
113
  export const StorageBucket = model<IStorageBucket>("StorageBucket", storageBucketSchema);
81
114
  export const StorageObject = model<IStorageObject>("StorageObject", storageObjectSchema);
82
115
  export const StorageUpload = model<IStorageUpload>("StorageUpload", storageUploadSchema);
83
116
  export const StorageToken = model<IStorageToken>("StorageToken", storageTokenSchema);
117
+ export const StorageCredential = model<IStorageCredential>("StorageCredential", storageCredentialSchema);
package/types/index.ts CHANGED
@@ -82,5 +82,6 @@ export type {
82
82
  IStorageObject,
83
83
  IStorageUpload,
84
84
  IStorageToken,
85
+ IStorageCredential,
85
86
  StorageTokenPermission,
86
87
  } from "./storage";
package/types/storage.ts CHANGED
@@ -1,5 +1,11 @@
1
1
  import { Document, Types } from "mongoose";
2
- import { StorageBucketStatus, StorageTokenStatus, StorageUploadStatus } from "../enum";
2
+ import {
3
+ StorageBucketStatus,
4
+ StorageCredentialRole,
5
+ StorageCredentialStatus,
6
+ StorageTokenStatus,
7
+ StorageUploadStatus,
8
+ } from "../enum";
3
9
 
4
10
  export type StorageTokenPermission = "read" | "write" | "delete" | "list" | "admin";
5
11
 
@@ -65,3 +71,21 @@ export interface IStorageToken extends Document {
65
71
  createdAt: Date;
66
72
  updatedAt: Date;
67
73
  }
74
+
75
+ export interface IStorageCredential extends Document {
76
+ name: string;
77
+ bucket: Types.ObjectId;
78
+ project?: Types.ObjectId;
79
+ user_id?: Types.ObjectId;
80
+ team?: Types.ObjectId;
81
+ provider: string;
82
+ provider_org_id: string;
83
+ access_key_id: string;
84
+ policy_names: string[];
85
+ role: StorageCredentialRole;
86
+ status: StorageCredentialStatus;
87
+ last_rotated_at?: Date;
88
+ revoked_at?: Date;
89
+ createdAt: Date;
90
+ updatedAt: Date;
91
+ }