@@ -3315,51 +3315,113 @@ impl DatabaseTypestateRule {
33153315 let db_indicators = match language {
33163316 Language :: JavaScript | Language :: TypeScript => & [
33173317 // Database drivers
3318- "mysql" , "mysql2" , "pg" , "postgres" , "mongodb" , "mongoose" ,
3319- "sequelize" , "prisma" , "typeorm" , "knex" , "drizzle" ,
3320- "better-sqlite3" , "sql.js" , "sqlite3" ,
3318+ "mysql" ,
3319+ "mysql2" ,
3320+ "pg" ,
3321+ "postgres" ,
3322+ "mongodb" ,
3323+ "mongoose" ,
3324+ "sequelize" ,
3325+ "prisma" ,
3326+ "typeorm" ,
3327+ "knex" ,
3328+ "drizzle" ,
3329+ "better-sqlite3" ,
3330+ "sql.js" ,
3331+ "sqlite3" ,
33213332 // Database-specific imports
3322- "PrismaClient" , "MongoClient" , "createConnection" , "createPool" ,
3333+ "PrismaClient" ,
3334+ "MongoClient" ,
3335+ "createConnection" ,
3336+ "createPool" ,
33233337 // ORM indicators
3324- "@prisma/client" , "@nestjs/typeorm" , "mikro-orm" ,
3338+ "@prisma/client" ,
3339+ "@nestjs/typeorm" ,
3340+ "mikro-orm" ,
33253341 ] [ ..] ,
33263342 Language :: Python => & [
3327- "psycopg2" , "pymysql" , "mysql.connector" , "sqlite3" , "sqlalchemy" ,
3328- "asyncpg" , "databases" , "tortoise" , "peewee" , "mongoengine" ,
3329- "pymongo" , "motor" , "django.db" , "flask_sqlalchemy" ,
3343+ "psycopg2" ,
3344+ "pymysql" ,
3345+ "mysql.connector" ,
3346+ "sqlite3" ,
3347+ "sqlalchemy" ,
3348+ "asyncpg" ,
3349+ "databases" ,
3350+ "tortoise" ,
3351+ "peewee" ,
3352+ "mongoengine" ,
3353+ "pymongo" ,
3354+ "motor" ,
3355+ "django.db" ,
3356+ "flask_sqlalchemy" ,
33303357 ] [ ..] ,
33313358 Language :: Go => & [
3332- "database/sql" , "gorm" , "sqlx" , "pgx" , "mongo-driver" ,
3333- "go-redis" , "ent" , "sql.Open" , "gorm.Open" ,
3359+ "database/sql" ,
3360+ "gorm" ,
3361+ "sqlx" ,
3362+ "pgx" ,
3363+ "mongo-driver" ,
3364+ "go-redis" ,
3365+ "ent" ,
3366+ "sql.Open" ,
3367+ "gorm.Open" ,
33343368 ] [ ..] ,
33353369 Language :: Java => & [
3336- "java.sql" , "javax.sql" , "jdbc" , "hibernate" , "jpa" ,
3337- "spring.data" , "mybatis" , "mongodb" , "EntityManager" ,
3370+ "java.sql" ,
3371+ "javax.sql" ,
3372+ "jdbc" ,
3373+ "hibernate" ,
3374+ "jpa" ,
3375+ "spring.data" ,
3376+ "mybatis" ,
3377+ "mongodb" ,
3378+ "EntityManager" ,
33383379 ] [ ..] ,
33393380 Language :: Rust => & [
3340- "sqlx" , "diesel" , "sea-orm" , "mongodb" , "tokio-postgres" ,
3341- "rusqlite" , "postgres" , "mysql_async" ,
3381+ "sqlx" ,
3382+ "diesel" ,
3383+ "sea-orm" ,
3384+ "mongodb" ,
3385+ "tokio-postgres" ,
3386+ "rusqlite" ,
3387+ "postgres" ,
3388+ "mysql_async" ,
33423389 ] [ ..] ,
33433390 _ => & [ ] [ ..] ,
33443391 } ;
33453392
3346- db_indicators. iter ( ) . any ( |indicator| content. contains ( indicator) )
3393+ db_indicators
3394+ . iter ( )
3395+ . any ( |indicator| content. contains ( indicator) )
33473396 }
33483397
33493398 /// Check if line looks like an API client call (not a database call)
33503399 fn is_api_client_call ( line : & str ) -> bool {
33513400 // Patterns that indicate HTTP API clients, not database operations
33523401 let api_patterns = [
33533402 // Common API client naming patterns (case-insensitive check)
3354- "api." , "Api." , "API." ,
3355- "service." , "Service." ,
3356- "client." , "Client." , // Only when followed by HTTP-like methods
3357- "http." , "Http." , "HTTP." ,
3358- "axios." , "fetch(" , "request." ,
3403+ "api." ,
3404+ "Api." ,
3405+ "API." ,
3406+ "service." ,
3407+ "Service." ,
3408+ "client." ,
3409+ "Client." , // Only when followed by HTTP-like methods
3410+ "http." ,
3411+ "Http." ,
3412+ "HTTP." ,
3413+ "axios." ,
3414+ "fetch(" ,
3415+ "request." ,
33593416 // React Query / TanStack patterns
3360- "useMutation" , "useQuery" ,
3417+ "useMutation" ,
3418+ "useQuery" ,
33613419 // Common API method patterns
3362- ".get(" , ".post(" , ".put(" , ".patch(" , ".delete(" ,
3420+ ".get(" ,
3421+ ".post(" ,
3422+ ".put(" ,
3423+ ".patch(" ,
3424+ ".delete(" ,
33633425 ] ;
33643426
33653427 // Check for API client naming convention: variableApi.method() or variableService.method()
@@ -3378,12 +3440,12 @@ impl DatabaseTypestateRule {
33783440 }
33793441
33803442 // Check for await with API patterns
3381- if trimmed. contains ( "await" ) && (
3382- trimmed. contains ( "Api." ) ||
3383- trimmed. contains ( "Service." ) ||
3384- trimmed. contains ( "api." ) ||
3385- trimmed. contains ( "service." )
3386- ) {
3443+ if trimmed. contains ( "await" )
3444+ && ( trimmed. contains ( "Api." )
3445+ || trimmed. contains ( "Service." )
3446+ || trimmed. contains ( "api." )
3447+ || trimmed. contains ( "service." ) )
3448+ {
33873449 return true ;
33883450 }
33893451
0 commit comments