@@ -247,9 +247,141 @@ fn convert_nodes<'a>(nodes: &'a node_types::NodeTypeMap) -> Vec<dbscheme::Entry<
247
247
name : "ast_node_parent" ,
248
248
members : [ "ast_node" , "file" ] . iter ( ) . cloned ( ) . collect ( ) ,
249
249
} ) ) ;
250
+
251
+ // TODO: remove
252
+ // Add duplicate code tables
253
+ entries. extend ( duplicate_code_entries ( ) ) ;
254
+
250
255
entries
251
256
}
252
257
258
+ fn duplicate_code_entries ( ) -> Vec < dbscheme:: Entry < ' static > > {
259
+ vec ! [
260
+ // duplicateCode(
261
+ // unique int id: @duplication,
262
+ // string relativePath: string ref,
263
+ // int equivClass: int ref);
264
+ dbscheme:: Entry :: Table ( dbscheme:: Table {
265
+ name: "duplicateCode" ,
266
+ keysets: None ,
267
+ columns: vec![
268
+ dbscheme:: Column {
269
+ db_type: dbscheme:: DbColumnType :: Int ,
270
+ name: "id" ,
271
+ unique: true ,
272
+ ql_type: ql:: Type :: AtType ( "duplication" ) ,
273
+ ql_type_is_ref: false ,
274
+ } ,
275
+ dbscheme:: Column {
276
+ db_type: dbscheme:: DbColumnType :: String ,
277
+ name: "relativePath" ,
278
+ unique: false ,
279
+ ql_type: ql:: Type :: String ,
280
+ ql_type_is_ref: true ,
281
+ } ,
282
+ dbscheme:: Column {
283
+ db_type: dbscheme:: DbColumnType :: Int ,
284
+ name: "equivClass" ,
285
+ unique: false ,
286
+ ql_type: ql:: Type :: Int ,
287
+ ql_type_is_ref: true ,
288
+ } ,
289
+ ] ,
290
+ } ) ,
291
+ // similarCode(
292
+ // unique int id: @similarity,
293
+ // string relativePath: string ref,
294
+ // int equivClass: int ref);
295
+ dbscheme:: Entry :: Table ( dbscheme:: Table {
296
+ name: "similarCode" ,
297
+ keysets: None ,
298
+ columns: vec![
299
+ dbscheme:: Column {
300
+ db_type: dbscheme:: DbColumnType :: Int ,
301
+ name: "id" ,
302
+ unique: true ,
303
+ ql_type: ql:: Type :: AtType ( "similarity" ) ,
304
+ ql_type_is_ref: false ,
305
+ } ,
306
+ dbscheme:: Column {
307
+ db_type: dbscheme:: DbColumnType :: String ,
308
+ name: "relativePath" ,
309
+ unique: false ,
310
+ ql_type: ql:: Type :: String ,
311
+ ql_type_is_ref: true ,
312
+ } ,
313
+ dbscheme:: Column {
314
+ db_type: dbscheme:: DbColumnType :: Int ,
315
+ name: "equivClass" ,
316
+ unique: false ,
317
+ ql_type: ql:: Type :: Int ,
318
+ ql_type_is_ref: true ,
319
+ } ,
320
+ ] ,
321
+ } ) ,
322
+ // @duplication_or_similarity = @duplication | @similarity
323
+ dbscheme:: Entry :: Union ( dbscheme:: Union {
324
+ name: "duplication_or_similarity" ,
325
+ members: [ "duplication" , "similarity" ] . iter( ) . cloned( ) . collect( ) ,
326
+ } ) ,
327
+ // tokens(
328
+ // int id: @duplication_or_similarity ref,
329
+ // int offset: int ref,
330
+ // int beginLine: int ref,
331
+ // int beginColumn: int ref,
332
+ // int endLine: int ref,
333
+ // int endColumn: int ref);
334
+ dbscheme:: Entry :: Table ( dbscheme:: Table {
335
+ name: "tokens" ,
336
+ keysets: None ,
337
+ columns: vec![
338
+ dbscheme:: Column {
339
+ db_type: dbscheme:: DbColumnType :: Int ,
340
+ name: "id" ,
341
+ unique: false ,
342
+ ql_type: ql:: Type :: AtType ( "duplication_or_similarity" ) ,
343
+ ql_type_is_ref: true ,
344
+ } ,
345
+ dbscheme:: Column {
346
+ db_type: dbscheme:: DbColumnType :: Int ,
347
+ name: "offset" ,
348
+ unique: false ,
349
+ ql_type: ql:: Type :: Int ,
350
+ ql_type_is_ref: true ,
351
+ } ,
352
+ dbscheme:: Column {
353
+ db_type: dbscheme:: DbColumnType :: Int ,
354
+ name: "beginLine" ,
355
+ unique: false ,
356
+ ql_type: ql:: Type :: Int ,
357
+ ql_type_is_ref: true ,
358
+ } ,
359
+ dbscheme:: Column {
360
+ db_type: dbscheme:: DbColumnType :: Int ,
361
+ name: "beginColumn" ,
362
+ unique: false ,
363
+ ql_type: ql:: Type :: Int ,
364
+ ql_type_is_ref: true ,
365
+ } ,
366
+ dbscheme:: Column {
367
+ db_type: dbscheme:: DbColumnType :: Int ,
368
+ name: "endLine" ,
369
+ unique: false ,
370
+ ql_type: ql:: Type :: Int ,
371
+ ql_type_is_ref: true ,
372
+ } ,
373
+ dbscheme:: Column {
374
+ db_type: dbscheme:: DbColumnType :: Int ,
375
+ name: "endColumn" ,
376
+ unique: false ,
377
+ ql_type: ql:: Type :: Int ,
378
+ ql_type_is_ref: true ,
379
+ } ,
380
+ ] ,
381
+ } ) ,
382
+ ]
383
+ }
384
+
253
385
fn create_tokeninfo < ' a > (
254
386
token_kinds : Map < & ' a str , usize > ,
255
387
) -> ( dbscheme:: Case < ' a > , dbscheme:: Table < ' a > ) {
0 commit comments