From 80ee974973caeef7f2f1b3059f54b58d6a5f50ec Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 16 Apr 2023 14:05:07 +0000 Subject: [PATCH 1/2] chore: remove PaymentPlan model --- .../20230415134138_drop_payment_plans.ts | 25 +++++++++ .../backend/src/models/payment-plan.ee.ts | 53 ------------------- 2 files changed, 25 insertions(+), 53 deletions(-) create mode 100644 packages/backend/src/db/migrations/20230415134138_drop_payment_plans.ts delete mode 100644 packages/backend/src/models/payment-plan.ee.ts diff --git a/packages/backend/src/db/migrations/20230415134138_drop_payment_plans.ts b/packages/backend/src/db/migrations/20230415134138_drop_payment_plans.ts new file mode 100644 index 00000000..b4a1b45c --- /dev/null +++ b/packages/backend/src/db/migrations/20230415134138_drop_payment_plans.ts @@ -0,0 +1,25 @@ +import { Knex } from 'knex'; +import appConfig from '../../config/app'; + +export async function up(knex: Knex): Promise { + if (!appConfig.isCloud) return; + + return knex.schema.dropTable('payment_plans'); +} + +export async function down(knex: Knex): Promise { + if (!appConfig.isCloud) return; + + return knex.schema.createTable('payment_plans', (table) => { + table.uuid('id').primary().defaultTo(knex.raw('gen_random_uuid()')); + table.string('name').notNullable(); + table.integer('task_count').notNullable(); + table.uuid('user_id').references('id').inTable('users'); + table.string('stripe_customer_id'); + table.string('stripe_subscription_id'); + table.timestamp('current_period_started_at').nullable(); + table.timestamp('current_period_ends_at').nullable(); + table.timestamp('deleted_at').nullable(); + table.timestamps(true, true); + }); +} diff --git a/packages/backend/src/models/payment-plan.ee.ts b/packages/backend/src/models/payment-plan.ee.ts deleted file mode 100644 index e492fb08..00000000 --- a/packages/backend/src/models/payment-plan.ee.ts +++ /dev/null @@ -1,53 +0,0 @@ -import Base from './base'; -import User from './user'; - -class PaymentPlan extends Base { - id!: string; - name!: string; - taskCount: number; - userId!: string; - stripeCustomerId!: string; - stripeSubscriptionId!: string; - currentPeriodStartedAt!: string; - currentPeriodEndsAt!: string; - user?: User; - - static tableName = 'payment_plans'; - - static jsonSchema = { - type: 'object', - required: [ - 'name', - 'taskCount', - 'userId', - 'stripeCustomerId', - 'stripeSubscriptionId', - 'currentPeriodStartedAt', - 'currentPeriodEndsAt', - ], - - properties: { - id: { type: 'string', format: 'uuid' }, - name: { type: 'string' }, - taskCount: { type: 'integer' }, - userId: { type: 'string', format: 'uuid' }, - stripeCustomerId: { type: 'string' }, - stripeSubscriptionId: { type: 'string' }, - currentPeriodStartedAt: { type: 'string' }, - currentPeriodEndsAt: { type: 'string' }, - }, - }; - - static relationMappings = () => ({ - user: { - relation: Base.BelongsToOneRelation, - modelClass: User, - join: { - from: 'payment_plans.user_id', - to: 'users.id', - }, - }, - }); -} - -export default PaymentPlan; From fcf3a480bee74df27d59dfef0f790994ddacba15 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 16 Apr 2023 14:22:30 +0000 Subject: [PATCH 2/2] chore: remove UsageAlert --- .../src/graphql/queries/get-usage-data.ee.ts | 33 ------------ .../backend/src/graphql/query-resolvers.ts | 2 - packages/backend/src/graphql/schema.graphql | 9 ---- .../src/components/UsageAlert/index.ee.tsx | 54 ------------------- .../src/graphql/queries/get-usage-data.ee.ts | 14 ----- packages/web/src/hooks/useUsageAlert.ee.ts | 47 ---------------- packages/web/src/hooks/useUsageData.ee.ts | 30 ----------- 7 files changed, 189 deletions(-) delete mode 100644 packages/backend/src/graphql/queries/get-usage-data.ee.ts delete mode 100644 packages/web/src/components/UsageAlert/index.ee.tsx delete mode 100644 packages/web/src/graphql/queries/get-usage-data.ee.ts delete mode 100644 packages/web/src/hooks/useUsageAlert.ee.ts delete mode 100644 packages/web/src/hooks/useUsageData.ee.ts diff --git a/packages/backend/src/graphql/queries/get-usage-data.ee.ts b/packages/backend/src/graphql/queries/get-usage-data.ee.ts deleted file mode 100644 index 40f604a3..00000000 --- a/packages/backend/src/graphql/queries/get-usage-data.ee.ts +++ /dev/null @@ -1,33 +0,0 @@ -import appConfig from '../../config/app'; -import Context from '../../types/express/context'; - -// TODO: remove as getBillingAndUsageData query has been introduced -const getUsageData = async ( - _parent: unknown, - _params: unknown, - context: Context -) => { - if (!appConfig.isCloud) return; - - const usageData = await context.currentUser - .$relatedQuery('currentUsageData') - .throwIfNotFound(); - - const subscription = await usageData - .$relatedQuery('subscription') - .throwIfNotFound(); - - const plan = subscription.plan; - - const computedUsageData = { - name: plan.name, - allowedTaskCount: plan.quota, - consumedTaskCount: usageData.consumedTaskCount, - remainingTaskCount: plan.quota - usageData.consumedTaskCount, - nextResetAt: usageData.nextResetAt, - }; - - return computedUsageData; -}; - -export default getUsageData; diff --git a/packages/backend/src/graphql/query-resolvers.ts b/packages/backend/src/graphql/query-resolvers.ts index 8ecb7a95..4dde16fe 100644 --- a/packages/backend/src/graphql/query-resolvers.ts +++ b/packages/backend/src/graphql/query-resolvers.ts @@ -11,7 +11,6 @@ import getExecutionSteps from './queries/get-execution-steps'; import getDynamicData from './queries/get-dynamic-data'; import getDynamicFields from './queries/get-dynamic-fields'; import getCurrentUser from './queries/get-current-user'; -import getUsageData from './queries/get-usage-data.ee'; import getPaymentPlans from './queries/get-payment-plans.ee'; import getPaddleInfo from './queries/get-paddle-info.ee'; import getBillingAndUsage from './queries/get-billing-and-usage.ee'; @@ -35,7 +34,6 @@ const queryResolvers = { getDynamicData, getDynamicFields, getCurrentUser, - getUsageData, getPaymentPlans, getPaddleInfo, getBillingAndUsage, diff --git a/packages/backend/src/graphql/schema.graphql b/packages/backend/src/graphql/schema.graphql index e07f5888..13e67fc6 100644 --- a/packages/backend/src/graphql/schema.graphql +++ b/packages/backend/src/graphql/schema.graphql @@ -34,7 +34,6 @@ type Query { parameters: JSONObject ): [SubstepArgument] getCurrentUser: User - getUsageData: GetUsageData getPaymentPlans: [PaymentPlan] getPaddleInfo: GetPaddleInfo getBillingAndUsage: GetBillingAndUsage @@ -529,14 +528,6 @@ type Usage { task: Int } -type GetUsageData { - name: String - allowedTaskCount: Int - consumedTaskCount: Int - remainingTaskCount: Int - nextResetAt: String -} - type GetPaddleInfo { sandbox: Boolean vendorId: Int diff --git a/packages/web/src/components/UsageAlert/index.ee.tsx b/packages/web/src/components/UsageAlert/index.ee.tsx deleted file mode 100644 index 1de30f7b..00000000 --- a/packages/web/src/components/UsageAlert/index.ee.tsx +++ /dev/null @@ -1,54 +0,0 @@ -import * as React from 'react'; -import { Link } from 'react-router-dom'; -import Alert from '@mui/material/Alert'; -import Snackbar from '@mui/material/Snackbar'; -import Typography from '@mui/material/Typography'; -import Stack from '@mui/material/Stack'; -import Button from '@mui/material/Button'; -import LinearProgress from '@mui/material/LinearProgress'; - -import useFormatMessage from 'hooks/useFormatMessage'; -import useUsageAlert from 'hooks/useUsageAlert.ee'; - -export default function UsageAlert() { - const formatMessage = useFormatMessage(); - const usageAlert = useUsageAlert(); - - if (!usageAlert.showAlert) return (); - - return ( - - - - - {usageAlert.alertMessage} - - - - - - - - - ); -} diff --git a/packages/web/src/graphql/queries/get-usage-data.ee.ts b/packages/web/src/graphql/queries/get-usage-data.ee.ts deleted file mode 100644 index dd6f8cb3..00000000 --- a/packages/web/src/graphql/queries/get-usage-data.ee.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { gql } from '@apollo/client'; - -export const GET_USAGE_DATA = gql` - query GetUsageData { - getUsageData { - name - allowedTaskCount - consumedTaskCount - remainingTaskCount - nextResetAt - } - } -`; - diff --git a/packages/web/src/hooks/useUsageAlert.ee.ts b/packages/web/src/hooks/useUsageAlert.ee.ts deleted file mode 100644 index 3764962f..00000000 --- a/packages/web/src/hooks/useUsageAlert.ee.ts +++ /dev/null @@ -1,47 +0,0 @@ -import * as URLS from 'config/urls'; -import useFormatMessage from './useFormatMessage'; -import useUsageData from './useUsageData.ee'; - -type UseUsageAlertReturn = { - showAlert: true; - hasExceededLimit: boolean; - alertMessage: string; - url: string; - consumptionPercentage: number; -}; - -type UseUsageNoAlertReturn = { - showAlert: false; -}; - -export default function useUsageAlert(): UseUsageAlertReturn | UseUsageNoAlertReturn { - const { - allowedTaskCount, - consumedTaskCount, - nextResetAt, - loading - } = useUsageData(); - const formatMessage = useFormatMessage(); - - if (loading) { - return { showAlert: false }; - } - - const withinUsageThreshold = consumedTaskCount > allowedTaskCount * 0.7; - const consumptionPercentage = consumedTaskCount / allowedTaskCount * 100; - const hasExceededLimit = consumedTaskCount >= allowedTaskCount; - - const alertMessage = formatMessage('usageAlert.informationText', { - allowedTaskCount, - consumedTaskCount, - relativeResetDate: nextResetAt?.toRelative(), - }); - - return { - showAlert: withinUsageThreshold, - hasExceededLimit, - alertMessage, - consumptionPercentage, - url: URLS.SETTINGS_PLAN_UPGRADE, - }; -} diff --git a/packages/web/src/hooks/useUsageData.ee.ts b/packages/web/src/hooks/useUsageData.ee.ts deleted file mode 100644 index 3a6e7c3f..00000000 --- a/packages/web/src/hooks/useUsageData.ee.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { useQuery } from '@apollo/client'; -import { DateTime } from 'luxon'; - -import { GET_USAGE_DATA } from 'graphql/queries/get-usage-data.ee'; - -type UseUsageDataReturn = { - name: string; - allowedTaskCount: number; - consumedTaskCount: number; - remainingTaskCount: number; - nextResetAt: DateTime; - loading: boolean; -}; - -export default function useUsageData(): UseUsageDataReturn { - const { data, loading } = useQuery(GET_USAGE_DATA); - - const usageData = data?.getUsageData; - const nextResetAt = usageData?.nextResetAt; - const nextResetAtDateTimeObject = nextResetAt && DateTime.fromMillis(Number(nextResetAt)); - - return { - name: usageData?.name, - allowedTaskCount: usageData?.allowedTaskCount, - consumedTaskCount: usageData?.consumedTaskCount, - remainingTaskCount: usageData?.remainingTaskCount, - nextResetAt: nextResetAtDateTimeObject, - loading - }; -}