// Extract ID from NocoDB response
function extractId(record) {
    return record.Id || record.id || record.ID || record._id;
}

// Sanitize user data for response
function sanitizeUser(user) {
    const { Password, password, ...safeUser } = user;
    return safeUser;
}

// Validate email format
function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
}

// Validate URL format
function validateUrl(url) {
    if (!url || typeof url !== 'string') {
        return '';
    }

    const trimmed = url.trim();
    if (!trimmed) {
        return '';
    }

    // Basic URL validation
    try {
        new URL(trimmed);
        return trimmed;
    } catch (e) {
        // If not a valid URL, check if it's a relative path or missing protocol
        if (trimmed.startsWith('/') || !trimmed.includes('://')) {
            // For relative paths or missing protocol, return as-is
            return trimmed;
        }
        return '';
    }
}

// Generate a random password
function generatePassword(length = 12) {
    const charset = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*';
    let password = '';
    for (let i = 0; i < length; i++) {
        password += charset.charAt(Math.floor(Math.random() * charset.length));
    }
    return password;
}

// Clean HTML for plain text
function stripHtmlTags(html) {
    return html.replace(/<[^>]*>/g, '').replace(/\s+/g, ' ').trim();
}

// Format date for display
function formatDate(date) {
    if (!date) return '';
    return new Date(date).toLocaleString();
}

// Check if user is expired (for temp users)
function isUserExpired(user) {
    const userType = user['User Type'] || user.UserType || user.userType || 'user';
    if (userType !== 'temp') return false;

    const expiration = user.ExpiresAt || user.expiresAt || user.Expiration || user.expiration;
    if (!expiration) return false;

    const expirationDate = new Date(expiration);
    const now = new Date();

    return now > expirationDate;
}

module.exports = {
    extractId,
    sanitizeUser,
    validateEmail,
    validateUrl,
    generatePassword,
    stripHtmlTags,
    formatDate,
    isUserExpired
};