Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 17 additions & 22 deletions controllers/ArtistsProController/getArtistsProHandler.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,28 @@
import { Request, Response } from "express";
import { getAllEnterpriseAccounts } from "@/lib/enterprise/getAllEnterpriseAccounts";

/**
* Handles GET requests for artists list
* Returns mock artists data
* Returns enterprise emails
*/
export const getArtistsProHandler = async (
req: Request,
res: Response
): Promise<void> => {
const mockResponse = {
status: "success",
artists: [
{
id: "1",
name: "Artist One",
timestamp: 1234567890,
},
{
id: "2",
name: "Artist Two",
timestamp: 1234567891,
},
{
id: "3",
name: "Artist Three",
timestamp: 1234567892,
},
],
};
try {
const allEnterpriseEmails = await getAllEnterpriseAccounts();

res.status(200).json(mockResponse);
res.status(200).json({
status: "success",
artists: allEnterpriseEmails,
});
} catch (error) {
console.error("[ERROR] Error in getArtistsProHandler:", error);
res.status(500).json({
status: "error",
artists: [],
error:
error instanceof Error ? error.message : "An unexpected error occurred",
});
}
};
4 changes: 2 additions & 2 deletions controllers/SubscriptionsController.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Request, Response } from "express";
import { getActiveSubscriptionDetails } from "../lib/stripe/getActiveSubscriptionDetails";
import isEnterprise from "../lib/isEnterprise";
import isEnterprise from "@/lib/enterprise/isEnterprise";
import { getAccountEmails } from "../lib/supabase/account_emails/getAccountEmails";

/**
Expand All @@ -25,7 +25,7 @@ export const getSubscriptionsHandler = async (
}

// Get account emails to check if any belong to enterprise domain
const accountEmails = await getAccountEmails(accountId);
const accountEmails = await getAccountEmails({ account_id: accountId });

if (!accountEmails || accountEmails.length === 0) {
res.status(404).json({
Expand Down
21 changes: 21 additions & 0 deletions lib/enterprise/getAllEnterpriseAccounts.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
import { getAccountEmails } from "@/lib/supabase/account_emails/getAccountEmails";
import { ENTERPRISE_DOMAINS } from "@/lib/consts";
import { Tables } from "@/types/database.types";

type AccountEmail = Tables<"account_emails">;

/**
* Gets all account emails that belong to enterprise domains
* @returns Array of account emails from enterprise domains
*/
export const getAllEnterpriseAccounts = async (): Promise<AccountEmail[]> => {
const allEnterpriseEmails: AccountEmail[] = [];

// Query for each enterprise domain using queryEmail parameter
for (const domain of ENTERPRISE_DOMAINS) {
const emails = await getAccountEmails({ queryEmail: `@${domain}` });
allEnterpriseEmails.push(...emails);
}

return allEnterpriseEmails;
};
4 changes: 2 additions & 2 deletions lib/isEnterprise.ts → lib/enterprise/isEnterprise.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { ENTERPRISE_DOMAINS } from "./consts";
import extractDomain from "./email/extractDomain";
import { ENTERPRISE_DOMAINS } from "@/lib/consts";
import extractDomain from "@/lib/email/extractDomain";

/**
* Returns true if the provided email belongs to a known enterprise domain.
Expand Down
26 changes: 21 additions & 5 deletions lib/supabase/account_emails/getAccountEmails.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,29 @@ import { Tables } from "../../../types/database.types";

type AccountEmail = Tables<"account_emails">;

type GetAccountEmailsParams = {
account_id?: string;
queryEmail?: string;
};

/**
* Selects account_emails with optional filters
*/
export const getAccountEmails = async (
accountId: string
params: GetAccountEmailsParams
): Promise<AccountEmail[]> => {
const { data, error } = await serverClient
.from("account_emails")
.select("*")
.eq("account_id", accountId);
let query = serverClient.from("account_emails").select("*");

// Add filters based on provided parameters
if (params.account_id) {
query = query.eq("account_id", params.account_id);
}

if (params.queryEmail) {
query = query.ilike("email", `%${params.queryEmail}%`);
}

const { data, error } = await query;

if (error) {
console.error("Error fetching account emails:", error);
Expand Down