Files
sql-like-filter/test/example.ts
2025-12-29 15:30:30 +08:00

56 lines
1.6 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { filter } from '../src/index.ts';
const users = [
{
metadata: {
tags: ['premium', 'active'],
type: 'user',
region: 'beijing',
created_at: '2024-03-15T10:00:00Z'
}
},
{
metadata: {
tags: ['free'],
type: 'admin',
region: 'shanghai',
created_at: '2024-01-10T09:00:00Z'
}
},
{
metadata: {
tags: ['enterprise', 'premium'],
type: 'user',
region: 'guangzhou',
created_at: '2024-04-05T12:00:00Z'
}
}
];
console.log('=== 方式1: users.filter(createFilter("...")) ===');
console.log('\n=== premium 用户 ===');
console.log(filter(users, "WHERE metadata.tags CONTAINS 'premium'"));
console.log('\n=== 北京用户 ===');
console.log(filter(users, "WHERE metadata.region = 'beijing'"));
console.log('\n=== user 类型用户 ===');
console.log(filter(users, "WHERE metadata.type = 'user'"));
console.log('\n=== premium 且 user 类型 ===');
console.log(filter(users, "WHERE metadata.tags CONTAINS 'premium' AND metadata.type = 'user'"));
console.log('\n=== 北京或上海用户 ===');
console.log(filter(users, "WHERE metadata.region IN ['beijing', 'shanghai']"));
console.log('\n=== 方式2: filter(users, "...") (支持 ORDER BY 和 LIMIT) ===');
console.log('\n=== 北京用户,按时间倒序 ===');
console.log(filter(users, "WHERE metadata.region = 'beijing' ORDER BY metadata.created_at DESC"));
console.log('\n=== 前2个用户按时间倒序 ===');
const limitResult = filter(users, "ORDER BY metadata.created_at DESC LIMIT 2");
console.log('Limit result length:', limitResult.length);
console.log(limitResult);