fix: remove authservice injection on userRepo

This commit is contained in:
samtiz 2025-07-14 04:29:12 +09:00
parent a2f57cbfa9
commit 94ae002d83
2 changed files with 13 additions and 18 deletions

View File

@ -3,15 +3,19 @@ const firebaseRepository = require('./firebase.repository');
let authService = null; let authService = null;
function setAuthService(service) { function getAuthService() {
authService = service; if (!authService) {
authService = require('../../services/authService');
}
return authService;
} }
function getBaseRepository() { function getBaseRepository() {
if (!authService) { const service = getAuthService();
throw new Error('AuthService has not been set for the user repository.'); if (!service) {
throw new Error('AuthService could not be loaded for the user repository.');
} }
const user = authService.getCurrentUser(); const user = service.getCurrentUser();
if (user && user.isLoggedIn) { if (user && user.isLoggedIn) {
return firebaseRepository; return firebaseRepository;
} }
@ -25,24 +29,23 @@ const userRepositoryAdapter = {
}, },
getById: () => { getById: () => {
const uid = authService.getCurrentUserId(); const uid = getAuthService().getCurrentUserId();
return getBaseRepository().getById(uid); return getBaseRepository().getById(uid);
}, },
update: (updateData) => { update: (updateData) => {
const uid = authService.getCurrentUserId(); const uid = getAuthService().getCurrentUserId();
return getBaseRepository().update({ uid, ...updateData }); return getBaseRepository().update({ uid, ...updateData });
}, },
deleteById: () => { deleteById: () => {
const uid = authService.getCurrentUserId(); const uid = getAuthService().getCurrentUserId();
return getBaseRepository().deleteById(uid); return getBaseRepository().deleteById(uid);
} }
}; };
module.exports = { module.exports = {
...userRepositoryAdapter, ...userRepositoryAdapter
setAuthService
}; };

View File

@ -4,7 +4,6 @@ const { getFirebaseAuth } = require('./firebaseClient');
const fetch = require('node-fetch'); const fetch = require('node-fetch');
const encryptionService = require('./encryptionService'); const encryptionService = require('./encryptionService');
const migrationService = require('./migrationService'); const migrationService = require('./migrationService');
const userRepository = require('../repositories/user');
const sessionRepository = require('../repositories/session'); const sessionRepository = require('../repositories/session');
const providerSettingsRepository = require('../repositories/providerSettings'); const providerSettingsRepository = require('../repositories/providerSettings');
const userModelSelectionsRepository = require('../repositories/userModelSelections'); const userModelSelectionsRepository = require('../repositories/userModelSelections');
@ -47,7 +46,6 @@ class AuthService {
encryptionService.initializeKey(this.currentUserId); encryptionService.initializeKey(this.currentUserId);
this.initializationPromise = null; this.initializationPromise = null;
userRepository.setAuthService(this);
sessionRepository.setAuthService(this); sessionRepository.setAuthService(this);
providerSettingsRepository.setAuthService(this); providerSettingsRepository.setAuthService(this);
userModelSelectionsRepository.setAuthService(this); userModelSelectionsRepository.setAuthService(this);
@ -56,12 +54,6 @@ class AuthService {
initialize() { initialize() {
if (this.isInitialized) return this.initializationPromise; if (this.isInitialized) return this.initializationPromise;
// --- Break the circular dependency ---
// Inject this authService instance into the session repository so it can be used
// without a direct `require` cycle.
sessionRepository.setAuthService(this);
// --- End of dependency injection ---
this.initializationPromise = new Promise((resolve) => { this.initializationPromise = new Promise((resolve) => {
const auth = getFirebaseAuth(); const auth = getFirebaseAuth();
onAuthStateChanged(auth, async (user) => { onAuthStateChanged(auth, async (user) => {