@chevre/domain
Version:
Chevre Domain Library for Node.js
114 lines (100 loc) • 4.29 kB
text/typescript
// tslint:disable:no-console
import { CognitoIdentityProvider, ListUsersCommandOutput, UserType } from '@aws-sdk/client-cognito-identity-provider';
import { fromEnv } from '@aws-sdk/credential-providers';
// import * as GMO from '@motionpicture/gmo-service';
import * as mongoose from 'mongoose';
// import { deleteCreditCardsById, getCreditCardPaymentServiceChannel } from '../../../../lib/chevre/service/task/deletePerson';
import { chevre } from '../../../../lib/index';
// tslint:disable-next-line:max-func-body-length
async function main(): Promise<void> {
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
// const paymentServiceRepo = await chevre.repository.PaymentService.createInstance(mongoose.connection);
const settingRepo = await chevre.repository.Setting.createInstance(mongoose.connection);
const setting = await settingRepo.findOne({ project: { id: { $eq: '*' } } }, ['userPoolIdOld']);
if (typeof setting?.userPoolIdOld !== 'string') {
throw new chevre.factory.errors.NotFound('setting.userPoolIdOld');
}
// const userPoolId: string = setting.userPoolIdNew;
const userPoolId: string = setting.userPoolIdOld;
const awsCredentials = fromEnv();
const cognitoIdentityServiceProvider = new CognitoIdentityProvider({
apiVersion: 'latest',
region: 'ap-northeast-1',
credentials: awsCredentials
});
// create user
const oldPersonRepo = await chevre.repository.Person.createInstance({
userPoolId: userPoolId,
cognitoIdentityServiceProvider
});
// const credentials = await getCreditCardPaymentServiceChannel({
// project: { id: 'xxxxxxxx' },
// paymentMethodType: 'CreditCard'
// })({ paymentService: paymentServiceRepo });
// const creditCardRepo = await chevre.repository.paymentMethod.CreditCard.createInstance({
// siteId: credentials.siteId,
// sitePass: credentials.sitePass,
// cardService: new GMO.service.Card(
// {
// endpoint: credentials.endpoint,
// useFetch: true
// },
// {
// timeout: 20000 // cronで実行の場合は長めに(2024-10-05~)
// }
// )
// });
const users: UserType[] = [];
let nextToken: string | undefined = '';
let page: number = 0;
while (typeof nextToken === 'string') {
// tslint:disable-next-line:no-magic-numbers
// if (page > 1000) {
// break;
// }
page += 1;
console.log('listUsersInGroup processing...', nextToken, page);
const listUsersResult = <ListUsersCommandOutput>await oldPersonRepo.cognitoIdentityServiceProvider.listUsers(
{
Limit: 50,
UserPoolId: userPoolId,
...(typeof nextToken === 'string' && nextToken !== '') ? { PaginationToken: nextToken } : undefined
}
);
// tslint:disable-next-line:no-null-keyword
console.dir(listUsersResult.Users?.at(0), { depth: null });
nextToken = listUsersResult.PaginationToken;
if (Array.isArray(listUsersResult.Users)) {
users.push(...listUsersResult.Users);
}
}
console.log('listUsers processed', nextToken, page);
console.log(users.length, 'users found');
let i = 0;
for (const user of users) {
i += 1;
const sub = user.Attributes?.find(({ Name }) => Name === 'sub')?.Value;
// if (i > 10) {
// continue;
// }
console.log('deleteCreditCardsById prossing...', user.Username, sub, i);
// await deleteCreditCardsById(
// {
// id: String(user.Username),
// useUsernameAsGMOMemberId: false
// },
// { userPoolIdOld: userPoolId }
// )(<any>{
// person: undefined,
// creditCard: creditCardRepo,
// cognitoIdentityServiceProvider: undefined
// });
console.log('deleteCreditCardsById processed.', user.Username, sub, i);
}
console.log(users.length, 'users processed');
}
main()
.then(() => {
console.log('success!');
})
.catch(console.error);