Skip to content

Commit 26a8ebc

Browse files
committed
done
1 parent 0ba430d commit 26a8ebc

File tree

3 files changed

+65
-31
lines changed

3 files changed

+65
-31
lines changed

src/commandDetails/company/add.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ const companyAddExecuteCommand: SapphireMessageExecuteType = async (
1515
): Promise<SapphireMessageResponse> => {
1616
const company_id = args['company_id'];
1717
if (!company_id) {
18-
throw new Error('please enter a valid user mention or ID for balance adjustment.');
18+
throw new Error('please enter a valid crunchbase company id.');
1919
}
2020
const role = args['role'];
2121
if (!role) {
22-
throw new Error('please enter a role.');
22+
throw new Error('please enter your role at this company.');
2323
}
24+
console.log(role);
2425
const company = await getCompanyInfo(<string>company_id);
2526
if (!company) {
2627
await insertCompany(<string>company_id);

src/commandDetails/company/find.ts

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,69 @@
1-
import { container } from '@sapphire/framework';
1+
import { SapphireClient, container } from '@sapphire/framework';
2+
import { MessageEmbed } from 'discord.js';
3+
import { DEFAULT_EMBED_COLOUR } from '../../utils/embeds';
24
import {
35
CodeyCommandDetails,
46
CodeyCommandOptionType,
57
SapphireMessageExecuteType,
68
SapphireMessageResponse,
79
} from '../../codeyCommand';
8-
import { getEmployeesByCompanyId } from '../../components/company';
10+
import {
11+
CompanyPersonDetails,
12+
CrunchbaseCompanyProperties,
13+
getCompanyInfo,
14+
getEmployeesByCompanyId,
15+
} from '../../components/company';
916

1017
const CRUNCHBASE_IMAGE_CDN =
1118
'https://res.cloudinary.com/crunchbase-production/image/upload/c_lpad,h_170,w_170,f_auto,b_white,q_auto:eco,dpr_1';
19+
20+
const getCompanyFindEmbed = async (
21+
client: SapphireClient<boolean>,
22+
companyId: string,
23+
companyInfo: CrunchbaseCompanyProperties,
24+
companyUsers: CompanyPersonDetails[],
25+
) => {
26+
const formattedUsers = await Promise.all(
27+
companyUsers.map(async (user) => {
28+
return {
29+
...user,
30+
tag: (await client.users.fetch(user.user_id)).tag,
31+
};
32+
}),
33+
);
34+
const companyEmbed = new MessageEmbed()
35+
.setColor(DEFAULT_EMBED_COLOUR)
36+
.setTitle(companyInfo.name)
37+
.setDescription(companyInfo.description);
38+
companyEmbed.setThumbnail(`${CRUNCHBASE_IMAGE_CDN}/${companyInfo.image_id}`);
39+
companyEmbed.addField(
40+
'Previous Employees',
41+
formattedUsers.map((user) => `${user.tag} - ${user.role}`).join(', '),
42+
);
43+
44+
return companyEmbed;
45+
};
46+
1247
const companyFindExecuteCommand: SapphireMessageExecuteType = async (
1348
client,
1449
_messageFromUser,
1550
args,
1651
): Promise<SapphireMessageResponse> => {
1752
const company_id = args['company_id'];
1853
if (!company_id) {
19-
throw new Error('please enter a valid user mention or ID for balance adjustment.');
54+
throw new Error('Please enter a company id.');
55+
}
56+
const companyInfo = await getCompanyInfo(<string>company_id);
57+
if (!companyInfo) {
58+
throw new Error('This company does not exist in the server!');
2059
}
2160
const companyUsers = await getEmployeesByCompanyId(<string>company_id);
2261
if (!companyUsers) {
23-
return 'No one works at this company in the server!';
62+
throw new Error('No one works at this company in the server!');
2463
}
25-
const formattedUsers = await Promise.all(
26-
companyUsers.map(async (user) => {
27-
return {
28-
...user,
29-
tag: (await client.users.fetch(user.user_id)).tag,
30-
};
31-
}),
32-
);
33-
return `employees are: ${JSON.stringify(formattedUsers)}`;
64+
return {
65+
embeds: [await getCompanyFindEmbed(client, <string>company_id, companyInfo, companyUsers)],
66+
};
3467
};
3568

3669
export const companyFindCommandDetails: CodeyCommandDetails = {
@@ -40,7 +73,7 @@ export const companyFindCommandDetails: CodeyCommandDetails = {
4073
detailedDescription: `**Examples:**
4174
\`${container.botPrefix}company find https://www.crunchbase.com/organization/microsoft\`
4275
\`${container.botPrefix}company f microsoft\``,
43-
messageWhenExecutingCommand: 'Enrolling company...',
76+
messageWhenExecutingCommand: 'Finding company...',
4477
executeCommand: companyFindExecuteCommand,
4578

4679
options: [

src/components/company.ts

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,10 @@ import _ from 'lodash';
22
import { openDB } from './db';
33
import { getCrunchbaseCompanyDetails } from '../utils/companyInfo';
44

5-
interface CompanyInfo {
5+
export interface CrunchbaseCompanyProperties {
66
company_id: string;
7-
description: string;
8-
}
9-
10-
interface CrunchbaseCompanyProperties {
117
name: string;
12-
short_description: string;
8+
description: string;
139
image_id: string;
1410
}
1511

@@ -18,21 +14,22 @@ export const insertCompany = async (companyId: string): Promise<void> => {
1814
const { name, short_description } = crunchbaseCompanyResponse;
1915
const companyImageId = crunchbaseCompanyResponse.identifier?.image_id;
2016
const crunchbaseCompanyInfo = {
17+
company_id: companyId,
2118
name,
22-
short_description,
19+
description: short_description,
2320
image_id: <string>companyImageId,
2421
};
25-
await insertCompanyDetails(<string>companyId, crunchbaseCompanyInfo);
22+
await insertCompanyDetails(crunchbaseCompanyInfo);
2623
};
2724

2825
export const insertCompanyDetails = async (
29-
companyId: string,
3026
crunchbaseCompanyInfo: CrunchbaseCompanyProperties,
3127
): Promise<void> => {
3228
const db = await openDB();
33-
const { name, image_id, short_description } = crunchbaseCompanyInfo;
34-
const insertCompanyCommand = `INSERT INTO companies (company_id, name, image_id, description) VALUES (?,?,?)`;
35-
await db.run(insertCompanyCommand, companyId, name, image_id, short_description);
29+
const { name, image_id, description, company_id } = crunchbaseCompanyInfo;
30+
console.log(crunchbaseCompanyInfo);
31+
const insertCompanyCommand = `INSERT INTO companies (company_id, name, image_id, description) VALUES (?,?,?,?)`;
32+
await db.run(insertCompanyCommand, company_id, name, image_id, description);
3633
};
3734

3835
export const addUserToCompany = async (
@@ -45,17 +42,20 @@ export const addUserToCompany = async (
4542
await db.run(insertCompanyCommand, userId, companyId, role);
4643
};
4744

48-
export const getCompanyInfo = async (companyId: string): Promise<CompanyInfo> => {
45+
export const getCompanyInfo = async (companyId: string): Promise<CrunchbaseCompanyProperties> => {
4946
const db = await openDB();
50-
return (await db.get('SELECT * FROM companies WHERE company_id = ?', companyId)) as CompanyInfo;
47+
return (await db.get(
48+
'SELECT * FROM companies WHERE company_id = ?',
49+
companyId,
50+
)) as CrunchbaseCompanyProperties;
5151
};
5252

5353
export const getCompaniesByUserId = async (userId: string): Promise<CompanyPersonDetails[]> => {
5454
const db = await openDB();
5555
return await db.all('SELECT * FROM companies_people WHERE user_id = ?', userId);
5656
};
5757

58-
interface CompanyPersonDetails {
58+
export interface CompanyPersonDetails {
5959
user_id: string;
6060
role: string;
6161
}

0 commit comments

Comments
 (0)