11import { prisma } from "@dub/prisma" ;
2+ import { nanoid } from "@dub/utils" ;
3+ import slugify from "@sindresorhus/slugify" ;
24import "dotenv-flow/config" ;
35import * as fs from "fs" ;
46import * as Papa from "papaparse" ;
@@ -7,19 +9,35 @@ import { createPartnerLink } from "../../lib/api/partners/create-partner-link";
79
810const programId = "xxx" ;
911const userId = "xxx" ;
10- const partnersToImport : { email : string ; slug : string } [ ] = [ ] ;
12+ const partnersToImport : { email : string ; slug : string ; enrolledAt : Date } [ ] =
13+ [ ] ;
1114
1215async function main ( ) {
1316 Papa . parse ( fs . createReadStream ( "affiliates.csv" , "utf-8" ) , {
1417 header : true ,
1518 skipEmptyLines : true ,
16- step : ( result : { data : { email : string ; slug : string } } ) => {
19+ step : ( result : {
20+ data : { payment_email ?: string ; date_registered : string } ;
21+ } ) => {
22+ const email = result . data . payment_email ;
23+ if ( ! email ) {
24+ return ;
25+ }
26+
27+ let slug = slugify ( email . split ( "@" ) [ 0 ] ) ;
28+ // check if slug is already used by another partner in partnersToImport
29+ while ( partnersToImport . some ( ( partner ) => partner . slug === slug ) ) {
30+ slug = `${ slug } -${ nanoid ( 4 ) . toLowerCase ( ) } ` ;
31+ }
32+
1733 partnersToImport . push ( {
18- email : result . data . email ,
19- slug : result . data . slug . slice ( 1 ) ,
34+ email,
35+ slug,
36+ enrolledAt : new Date ( result . data . date_registered ) ,
2037 } ) ;
2138 } ,
2239 complete : async ( ) => {
40+ console . table ( partnersToImport ) ;
2341 const program = await prisma . program . findUniqueOrThrow ( {
2442 where : {
2543 id : programId ,
@@ -57,9 +75,12 @@ async function main() {
5775 link : partnerLink ,
5876 workspace : program . workspace ,
5977 partner : partnerToCreate ,
78+ enrolledAt : partner . enrolledAt ,
6079 } ) ;
6180
62- console . log ( enrolledPartner ) ;
81+ console . log (
82+ `Created and enrolled partner ${ enrolledPartner . email } with link ${ enrolledPartner ?. links ?. [ 0 ] ?. shortLink } ` ,
83+ ) ;
6384 }
6485 } ,
6586 } ) ;
0 commit comments