@brimble/models 3.8.42 → 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
@@ -60,10 +60,11 @@ export { default as SandboxSnapshot } from "./sandbox-snapshot";
60
60
  export { default as SandboxSnapshotUsageSegment } from "./sandbox-snapshot-usage-segment";
61
61
  export { default as SandboxUsageSegment } from "./sandbox-usage-segment";
62
62
  export { default as VolumeUsageSegment } from "./volume-usage-segment";
63
+ export { default as ObjectStorageUsageSegment } from "./object-storage-usage-segment";
63
64
  export { default as IdempotencyRecord } from "./idempotency";
64
- export { StorageBucket, StorageObject, StorageUpload, StorageToken } from "./storage";
65
- 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, IIdempotencyRecord, IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, StorageTokenPermission, } from "./types";
66
- 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";
67
68
  import mongoose from "mongoose";
68
69
  export declare const connectToMongo: (mongoUrl: string, config?: mongoose.ConnectOptions) => Promise<void>;
69
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.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.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.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 = 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");
@@ -140,6 +140,8 @@ var sandbox_usage_segment_1 = require("./sandbox-usage-segment");
140
140
  Object.defineProperty(exports, "SandboxUsageSegment", { enumerable: true, get: function () { return __importDefault(sandbox_usage_segment_1).default; } });
141
141
  var volume_usage_segment_1 = require("./volume-usage-segment");
142
142
  Object.defineProperty(exports, "VolumeUsageSegment", { enumerable: true, get: function () { return __importDefault(volume_usage_segment_1).default; } });
143
+ var object_storage_usage_segment_1 = require("./object-storage-usage-segment");
144
+ Object.defineProperty(exports, "ObjectStorageUsageSegment", { enumerable: true, get: function () { return __importDefault(object_storage_usage_segment_1).default; } });
143
145
  var idempotency_1 = require("./idempotency");
144
146
  Object.defineProperty(exports, "IdempotencyRecord", { enumerable: true, get: function () { return __importDefault(idempotency_1).default; } });
145
147
  var storage_1 = require("./storage");
@@ -147,6 +149,7 @@ Object.defineProperty(exports, "StorageBucket", { enumerable: true, get: functio
147
149
  Object.defineProperty(exports, "StorageObject", { enumerable: true, get: function () { return storage_1.StorageObject; } });
148
150
  Object.defineProperty(exports, "StorageUpload", { enumerable: true, get: function () { return storage_1.StorageUpload; } });
149
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; } });
150
153
  var enum_1 = require("./enum");
151
154
  Object.defineProperty(exports, "GIT_TYPE", { enumerable: true, get: function () { return enum_1.GIT_TYPE; } });
152
155
  Object.defineProperty(exports, "INTEGRATION_TYPES", { enumerable: true, get: function () { return enum_1.INTEGRATION_TYPES; } });
@@ -189,6 +192,8 @@ Object.defineProperty(exports, "SANDBOX_SNAPSHOT_STATUS", { enumerable: true, ge
189
192
  Object.defineProperty(exports, "StorageBucketStatus", { enumerable: true, get: function () { return enum_1.StorageBucketStatus; } });
190
193
  Object.defineProperty(exports, "StorageUploadStatus", { enumerable: true, get: function () { return enum_1.StorageUploadStatus; } });
191
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; } });
192
197
  const mongoose_1 = __importDefault(require("mongoose"));
193
198
  const utils_1 = require("@brimble/utils");
194
199
  const connectToMongo = (mongoUrl, config) => __awaiter(void 0, void 0, void 0, function* () {
@@ -0,0 +1,9 @@
1
+ import { IObjectStorageUsageSegment } from "./types/object-storage-usage-segment";
2
+ declare const _default: import("mongoose").Model<IObjectStorageUsageSegment, {}, {}, {}, import("mongoose").Document<unknown, {}, IObjectStorageUsageSegment, {}, import("mongoose").DefaultSchemaOptions> & IObjectStorageUsageSegment & Required<{
3
+ _id: import("mongoose").Types.ObjectId;
4
+ }> & {
5
+ __v: number;
6
+ } & {
7
+ id: string;
8
+ }, any, IObjectStorageUsageSegment>;
9
+ export default _default;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const mongoose_1 = require("mongoose");
4
+ const objectStorageUsageSegmentSchema = new mongoose_1.Schema({
5
+ bucket_id: {
6
+ type: mongoose_1.Schema.Types.ObjectId,
7
+ ref: "StorageBucket",
8
+ required: true,
9
+ },
10
+ user_id: {
11
+ type: mongoose_1.Schema.Types.ObjectId,
12
+ ref: "User",
13
+ required: true,
14
+ index: true,
15
+ },
16
+ team_id: {
17
+ type: mongoose_1.Schema.Types.ObjectId,
18
+ ref: "Team",
19
+ default: null,
20
+ index: true,
21
+ },
22
+ size_gb: {
23
+ type: Number,
24
+ default: 0,
25
+ },
26
+ costs: {
27
+ startDate: { type: Date, required: true },
28
+ endDate: { type: Date, default: null },
29
+ },
30
+ billed: {
31
+ type: Boolean,
32
+ default: false,
33
+ index: true,
34
+ },
35
+ }, {
36
+ timestamps: true,
37
+ });
38
+ objectStorageUsageSegmentSchema.index({ user_id: 1, billed: 1, "costs.endDate": 1 });
39
+ objectStorageUsageSegmentSchema.index({ team_id: 1, billed: 1, "costs.endDate": 1 });
40
+ objectStorageUsageSegmentSchema.index({ bucket_id: 1, "costs.endDate": 1 });
41
+ objectStorageUsageSegmentSchema.index({ bucket_id: 1 }, {
42
+ unique: true,
43
+ partialFilterExpression: { "costs.endDate": null },
44
+ name: "unique_open_segment_per_object_storage_bucket",
45
+ });
46
+ exports.default = (0, mongoose_1.model)("ObjectStorageUsageSegment", objectStorageUsageSegmentSchema, "object_storage_usage_segments");
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);
@@ -61,5 +61,6 @@ export type { ISandboxSnapshot } from "./sandbox-snapshot";
61
61
  export type { ISandboxSnapshotUsageSegment, ISandboxSnapshotUsageSegmentCosts, } from "./sandbox-snapshot-usage-segment";
62
62
  export type { ISandboxUsageSegment, ISandboxUsageSegmentCurrent, ISandboxUsageSegmentCosts, } from "./sandbox-usage-segment";
63
63
  export type { IVolumeUsageSegment, IVolumeUsageSegmentCosts, } from "./volume-usage-segment";
64
+ export type { IObjectStorageUsageSegment, IObjectStorageUsageSegmentCosts, IObjectStorageUsageUnitsSummary, } from "./object-storage-usage-segment";
64
65
  export type { IIdempotencyRecord } from "./idempotency";
65
- export type { IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, StorageTokenPermission, } from "./storage";
66
+ export type { IStorageBucket, IStorageObject, IStorageUpload, IStorageToken, IStorageCredential, StorageTokenPermission, } from "./storage";
@@ -0,0 +1,23 @@
1
+ import { Document, Types } from "mongoose";
2
+ export interface IObjectStorageUsageSegmentCosts {
3
+ startDate: Date;
4
+ endDate: Date | null;
5
+ }
6
+ export interface IObjectStorageUsageSegment extends Document {
7
+ bucket_id: Types.ObjectId;
8
+ user_id: Types.ObjectId;
9
+ team_id: Types.ObjectId | null;
10
+ size_gb: number;
11
+ costs: IObjectStorageUsageSegmentCosts;
12
+ billed: boolean;
13
+ createdAt: Date;
14
+ updatedAt: Date;
15
+ }
16
+ export interface IObjectStorageUsageUnitsSummary {
17
+ gbHours: number;
18
+ segmentIds: string[];
19
+ date: {
20
+ start: string;
21
+ end: string;
22
+ };
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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
@@ -60,8 +60,9 @@ export { default as SandboxSnapshot } from "./sandbox-snapshot";
60
60
  export { default as SandboxSnapshotUsageSegment } from "./sandbox-snapshot-usage-segment";
61
61
  export { default as SandboxUsageSegment } from "./sandbox-usage-segment";
62
62
  export { default as VolumeUsageSegment } from "./volume-usage-segment";
63
+ export { default as ObjectStorageUsageSegment } from "./object-storage-usage-segment";
63
64
  export { default as IdempotencyRecord } from "./idempotency";
64
- export { StorageBucket, StorageObject, StorageUpload, StorageToken } from "./storage";
65
+ export { StorageBucket, StorageObject, StorageUpload, StorageToken, StorageCredential } from "./storage";
65
66
 
66
67
  export {
67
68
  IUser,
@@ -135,11 +136,15 @@ export {
135
136
  ISandboxUsageSegmentCosts,
136
137
  IVolumeUsageSegment,
137
138
  IVolumeUsageSegmentCosts,
139
+ IObjectStorageUsageSegment,
140
+ IObjectStorageUsageSegmentCosts,
141
+ IObjectStorageUsageUnitsSummary,
138
142
  IIdempotencyRecord,
139
143
  IStorageBucket,
140
144
  IStorageObject,
141
145
  IStorageUpload,
142
146
  IStorageToken,
147
+ IStorageCredential,
143
148
  StorageTokenPermission,
144
149
  } from "./types";
145
150
  export {
@@ -184,6 +189,8 @@ export {
184
189
  StorageBucketStatus,
185
190
  StorageUploadStatus,
186
191
  StorageTokenStatus,
192
+ StorageCredentialRole,
193
+ StorageCredentialStatus,
187
194
  } from "./enum";
188
195
 
189
196
  import mongoose from "mongoose";
@@ -0,0 +1,59 @@
1
+ import { model, Schema } from "mongoose";
2
+ import { IObjectStorageUsageSegment } from "./types/object-storage-usage-segment";
3
+
4
+ const objectStorageUsageSegmentSchema = new Schema<IObjectStorageUsageSegment>(
5
+ {
6
+ bucket_id: {
7
+ type: Schema.Types.ObjectId,
8
+ ref: "StorageBucket",
9
+ required: true,
10
+ },
11
+ user_id: {
12
+ type: Schema.Types.ObjectId,
13
+ ref: "User",
14
+ required: true,
15
+ index: true,
16
+ },
17
+ team_id: {
18
+ type: Schema.Types.ObjectId,
19
+ ref: "Team",
20
+ default: null,
21
+ index: true,
22
+ },
23
+ size_gb: {
24
+ type: Number,
25
+ default: 0,
26
+ },
27
+ costs: {
28
+ startDate: { type: Date, required: true },
29
+ endDate: { type: Date, default: null },
30
+ },
31
+ billed: {
32
+ type: Boolean,
33
+ default: false,
34
+ index: true,
35
+ },
36
+ },
37
+ {
38
+ timestamps: true,
39
+ },
40
+ );
41
+
42
+ objectStorageUsageSegmentSchema.index({ user_id: 1, billed: 1, "costs.endDate": 1 });
43
+ objectStorageUsageSegmentSchema.index({ team_id: 1, billed: 1, "costs.endDate": 1 });
44
+ objectStorageUsageSegmentSchema.index({ bucket_id: 1, "costs.endDate": 1 });
45
+
46
+ objectStorageUsageSegmentSchema.index(
47
+ { bucket_id: 1 },
48
+ {
49
+ unique: true,
50
+ partialFilterExpression: { "costs.endDate": null },
51
+ name: "unique_open_segment_per_object_storage_bucket",
52
+ },
53
+ );
54
+
55
+ export default model<IObjectStorageUsageSegment>(
56
+ "ObjectStorageUsageSegment",
57
+ objectStorageUsageSegmentSchema,
58
+ "object_storage_usage_segments",
59
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brimble/models",
3
- "version": "3.8.42",
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
@@ -71,11 +71,17 @@ export type {
71
71
  IVolumeUsageSegment,
72
72
  IVolumeUsageSegmentCosts,
73
73
  } from "./volume-usage-segment";
74
+ export type {
75
+ IObjectStorageUsageSegment,
76
+ IObjectStorageUsageSegmentCosts,
77
+ IObjectStorageUsageUnitsSummary,
78
+ } from "./object-storage-usage-segment";
74
79
  export type { IIdempotencyRecord } from "./idempotency";
75
80
  export type {
76
81
  IStorageBucket,
77
82
  IStorageObject,
78
83
  IStorageUpload,
79
84
  IStorageToken,
85
+ IStorageCredential,
80
86
  StorageTokenPermission,
81
87
  } from "./storage";
@@ -0,0 +1,26 @@
1
+ import { Document, Types } from "mongoose";
2
+
3
+ export interface IObjectStorageUsageSegmentCosts {
4
+ startDate: Date;
5
+ endDate: Date | null;
6
+ }
7
+
8
+ export interface IObjectStorageUsageSegment extends Document {
9
+ bucket_id: Types.ObjectId;
10
+ user_id: Types.ObjectId;
11
+ team_id: Types.ObjectId | null;
12
+ size_gb: number;
13
+ costs: IObjectStorageUsageSegmentCosts;
14
+ billed: boolean;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+
19
+ export interface IObjectStorageUsageUnitsSummary {
20
+ gbHours: number;
21
+ segmentIds: string[];
22
+ date: {
23
+ start: string;
24
+ end: string;
25
+ };
26
+ }
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
+ }