Skip to content

Commit

Permalink
pass context for inmemory
Browse files Browse the repository at this point in the history
  • Loading branch information
ignatandrei committed Sep 3, 2023
1 parent 8dcaf85 commit 28a2041
Show file tree
Hide file tree
Showing 28 changed files with 692 additions and 93 deletions.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@



# ApplicationDBContext
# SimpleTableDBContext

```mermaid
erDiagram
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//this was autogenerated by a tool. Do not modify! Use partial
//1. this was autogenerated by a tool. Do not modify! Use partial
import JsonStreamDecoder from "../../../Common/asyncEnumerable";
import { HttpClient } from "@angular/common/http";;
import { MatTableDataSource } from "@angular/material/table";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//this was autogenerated by a tool. Do not modify! Use partial
//2.this was autogenerated by a tool. Do not modify! Use partial
import JsonStreamDecoder from "../../../Common/asyncEnumerable";
import { HttpClient } from "@angular/common/http";;
import { MatTableDataSource } from "@angular/material/table";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
//this was autogenerated by a tool. Do not modify! Use partial
//3.this was autogenerated by a tool. Do not modify! Use partial
import JsonStreamDecoder from "../../../Common/asyncEnumerable";
import { HttpClient } from "@angular/common/http";;
import { MatTableDataSource } from "@angular/material/table";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
//this was autogenerated by a tool. Do not modify! Use partial
import JsonStreamDecoder from "../../../Common/asyncEnumerable";
import { HttpClient } from "@angular/common/http";;
import { MatTableDataSource } from "@angular/material/table";
import { concatMap, delay, map,Observable,of,scan } from "rxjs";
import { environment } from "src/environments/environment";;
import {Component, Injectable , OnInit } from "@angular/core";;



export class SimpleTableDBContext_Department_Table
{

baseUrl:string = '';
constructor(cc: Partial<SimpleTableDBContext_Department_Table> | null = null) {

if (cc != null) {
// Object.keys(tilt).forEach((key) => {
// (this as any)[key] = (tilt as any)[key];
// });
Object.assign(this,cc);
}
}

public iddepartment : number = 0;
public name : string = '';
}

@Injectable({
providedIn: 'root'
})
export class SimpleTableDBContext_Department_Table_Interaction {
baseUrl:string = environment.url;
constructor(private http: HttpClient) {
}


public getAllCount():Observable<number>{

var data=this.http.get<number>(this.baseUrl+'AdvancedSearch_SimpleTableDBContext_Department/GetAllCount')
return data;
}
/*
public getSearchSimple(searchData:SearchData ):Observable<SimpleTableDBContext_Department_Table[]>{
var url= this.baseUrl+'AdvancedSearch_SimpleTableDBContext_Department/';
url+=`GetSearchSimple?ColumnName=${searchData.ColumnName}&Operator=${searchData.Operator}&Value=${searchData.Value}`;
var data=JsonStreamDecoder.fromFetchStream<SimpleTableDBContext_Department_Table>(url)
.pipe(
map(it=>new SimpleTableDBContext_Department_Table(it)),
concatMap((x:SimpleTableDBContext_Department_Table,index:number)=>{
if((index+1) % 100 === 0)
return of<SimpleTableDBContext_Department_Table>(x).pipe(delay(5*1000));
else
return of<SimpleTableDBContext_Department_Table>(x);
}),
scan((acc:SimpleTableDBContext_Department_Table[],value:SimpleTableDBContext_Department_Table)=>[...acc, value] as SimpleTableDBContext_Department_Table[], [] as SimpleTableDBContext_Department_Table[]),
);
return data as Observable<SimpleTableDBContext_Department_Table[]>;
}
*/
public getAll():Observable<SimpleTableDBContext_Department_Table[]>{
//var data=ajax.getJSON(this.baseUrl+'AdvancedSearch_SimpleTableDBContext_Department/GetAll')
//.pipe(
// map(response => {
// return response as SimpleTableDBContext_Department_Table[];
// })
// );
var data=JsonStreamDecoder.fromFetchStream<SimpleTableDBContext_Department_Table>(this.baseUrl+'AdvancedSearch_SimpleTableDBContext_Department/GetAll')
.pipe(
map(it=>new SimpleTableDBContext_Department_Table(it)),
concatMap((x:SimpleTableDBContext_Department_Table,index:number)=>{
if((index+1) % 100 === 0)
return of<SimpleTableDBContext_Department_Table>(x).pipe(delay(5*1000));
else
return of<SimpleTableDBContext_Department_Table>(x);
}),

scan((acc:SimpleTableDBContext_Department_Table[],value:SimpleTableDBContext_Department_Table)=>[...acc, value] as SimpleTableDBContext_Department_Table[], [] as SimpleTableDBContext_Department_Table[]),

);
return data as Observable<SimpleTableDBContext_Department_Table[]>;

}
}
//let inputValueSearch_Department = '';
@Component({
selector: 'app-tabledata-Department',
//templateUrl: './Department-gui.component.html',
template: `here will be {{nameTable}} from {{nameDB}}
<span *ngIf="nrRecords!=null">Nr records: {{nrRecords}}</span>
<p></p>
<button mat-raised-button color="primary" (click)="showAllClickHandler()">Show all</button>
<span *ngIf="dataTable!=null">Loaded {{dataTable!.length}} records</span>
<div *ngIf="dataTable!=null">
<mat-table #table [dataSource]="dataSource!" matSort>
<ng-container matColumnDef="rowIndex">
<th mat-header-cell *matHeaderCellDef> Index </th>
<td mat-cell *matCellDef="let element;index as i;"> {{ i +1 }} </td>
</ng-container>
<ng-container matColumnDef="iddepartment">
<mat-header-cell *matHeaderCellDef mat-sort-header> IDDepartment </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.iddepartment}} </mat-cell>
</ng-container>
<ng-container matColumnDef="name">
<mat-header-cell *matHeaderCellDef mat-sort-header> Name </mat-header-cell>
<mat-cell *matCellDef="let element"> {{element.name}} </mat-cell>
</ng-container>
<mat-header-row *matHeaderRowDef="columns"></mat-header-row>
<mat-row *matRowDef="let row; columns: columns;"></mat-row>
</mat-table>
`,
//styleUrls: ['./Department-gui.component.css']
})

export class TableData_Department implements OnInit
{
public nameTable = 'Department';
public nameDB = 'SimpleTableDBContext';
constructor(private interaction:SimpleTableDBContext_Department_Table_Interaction){
}
public dataTable:SimpleTableDBContext_Department_Table[] | null = null;
public dataTableFiltered:SimpleTableDBContext_Department_Table[] | null = null;
public dataSource : MatTableDataSource<SimpleTableDBContext_Department_Table> | null = null;
public nrRecords:number|null=null;
ngOnInit(): void {
this.interaction.getAllCount().subscribe(it=>{this.nrRecords=it;});
}
public showAllClickHandler(){
this.interaction.getAll().subscribe(
it=>{
this.dataTable=it;
this.dataTableFiltered=it;
this.dataSource=new MatTableDataSource(it);
}

);
}

public columns : string[] =[

'rowIndex'

,'iddepartment'

,'name'


];

/*
const filterData = (val: string, data: SimpleTableDBContext_Department_Table[]) => {
if (val == null || val === '') {
setDataTableFiltered(data);
return;
}
if (data == null) {
setDataTableFiltered(null);
return;
}
val = val.toLowerCase();
var f = data.filter(it => {
if (it.iddepartment != null)
if (it.iddepartment.toString().toLowerCase().includes(val))
return true;
if (it.name != null)
if (it.name.toString().toLowerCase().includes(val))
return true;
return false;
});
setDataTableFiltered(f);
}
useEffect(()=>{
document.title = nameTable+" - "+nameDB;
})
const [isLoadingNrRec, errorNrRect, nrRecords]= useRxObs(interaction.getAllCount());
const showAllClickHandler=()=>{
setDataTable(null);
setLoading(true);
interaction.getAll().subscribe({
next: (data:SimpleTableDBContext_Department_Table[])=>{
setDataTable(data);
filterData(inputValueSearch_Department, data);
},
complete:()=>{ setLoading(false);}
}
)
};
const searchSimple=(searchData: SearchData)=>{
if(!searchData.IsValid()){
window.alert("Invalid search data");
return;
}
setDataTable(null);
setLoading(true);
interaction.getSearchSimple(searchData).subscribe({
next: (data:SimpleTableDBContext_Department_Table[])=>{
setDataTable(data);
filterData(inputValueSearch_Department, data);
},
complete:()=>{ setLoading(false);}
}
)
};
useEffect(()=>{
if (typeof showAll==="boolean" && showAll){
showAllClickHandler();
}
else{
//console.log('basd',searchSimpleData,searchSimpleData != null && typeof searchSimpleData !== "boolean" && searchSimpleData.IsValid());
if (searchSimpleData != null && typeof searchSimpleData !== "boolean" && searchSimpleData.IsValid())
searchSimple(searchSimpleData);
}
// eslint-disable-next-line react-hooks/exhaustive-deps
},[]);
return (
<>
Table {nameTable}
{isLoadingNrRec && <Spin />}
{errorNrRect && <> - error loading data </>}
{nrRecords != null && <> - {nrRecords} records</>}
<p></p>
<Button type="primary" loading={loading} onClick={showAllClickHandler}>Load All Department</Button>
<Link to="/Admin/Databases/SimpleTableDBContext/tables/Department/search/showall" target={"_blank"}>Direct Link</Link>
<DatabaseTableSelector DBName={nameDB} TableName={nameTable} loadingData={loading} searchSimple={searchSimple} /> <div>
{dataTable == null && "no data loaded"}
{dataTable !=null &&
<>
Number rows loaded {dataTable?.length} {loading && <Spin />} / filtered {dataTableFiltered?.length} / Search -{inputValueSearch_Department}-
{true &&
<Input placeholder="SearchHere" onChange={(e) => {
inputValueSearch_Department=(e.target.value);
filterData(inputValueSearch_Department, dataTable!);
}
} />
}
<Table pagination= {false} dataSource={dataTableFiltered!} columns={columns} />;
</>
}
</div>
</>
)
*/
}
Original file line number Diff line number Diff line change
@@ -1,23 +1,33 @@
//this was autogenerated by a tool. Do not modify! Use partial
//1.this was autogenerated by a tool. Do not modify! Use partial
using System;
using System.Collections.Generic;
using GeneratorFromDB;
using Microsoft.EntityFrameworkCore;

//modified 2023-09-03
namespace Generated;

public partial class SimpleTableDBContext : DbContext
{
public SimpleTableDBContext(DbContextOptions<SimpleTableDBContext> options)
: base(options)
{
{
}

public virtual DbSet<Department> Department { get; set; }
//public virtual DbSet<Department_Table> Department_Table { get; set; }

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Department>(entity =>
{
entity.HasKey(e => e.IDDepartment);
entity.Property(e => e.Name)
.HasMaxLength(50)
.IsUnicode(false);
});

OnModelCreatingPartial(modelBuilder);
}

Expand All @@ -27,9 +37,9 @@ protected override void OnModelCreating(ModelBuilder modelBuilder)
//added new
public partial class SimpleTableDBContext : DbContext
{
public static MetaDB metaData = new("ApplicationDBContext");
public static MetaDB metaData = new("SimpleTableDBContext");
[System.Runtime.CompilerServices.ModuleInitializer]
public static void ApplicationDBContext_AddTables(){
public static void SimpleTableDBContext_AddTables(){
metaData.AddTable(Department_Table.metaData);
AllDB.Singleton.AddDb(metaData);
}
Expand Down Expand Up @@ -140,6 +150,8 @@ public partial class SimpleTableDBContext : DbContext
item.CopyFrom(val);
await this.SaveChangesAsync();
*/
this.Department.Update(val);
await this.SaveChangesAsync();
return true;
}

Expand Down Expand Up @@ -168,16 +180,16 @@ public partial class SimpleTableDBContext : DbContext
}

}
public interface I_InsertDataApplicationDBContext{
public interface I_InsertDataSimpleTableDBContext{
Task<Department_Table?> InsertDepartment(Department_Table value);
Task<Department_Table[]> InsertDepartments(params Department_Table[] values);

}

public class InsertDataApplicationDBContext: I_InsertDataApplicationDBContext{
public class InsertDataSimpleTableDBContext: I_InsertDataSimpleTableDBContext{

private SimpleTableDBContext _context;
public InsertDataApplicationDBContext(SimpleTableDBContext context){
public InsertDataSimpleTableDBContext(SimpleTableDBContext context){
_context=context;
}
public async Task<Department_Table?> InsertDepartment(Department_Table value){
Expand All @@ -202,7 +214,7 @@ public class InsertDataApplicationDBContext: I_InsertDataApplicationDBContext{
}


}//end class InsertDataApplicationDBContext
}//end class InsertDataSimpleTableDBContext

public interface ISearchDataDepartment {
IAsyncEnumerable<Department> DepartmentFind_AsyncEnumerable(SearchDepartment? search);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
//this was autogenerated by a tool. Do not modify! Use partial
//2.this was autogenerated by a tool. Do not modify! Use partial
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore;

namespace Generated;

public partial class SearchDepartment: GeneratorFromDB.Search<eDepartmentColumns,Department>
{
//private ApplicationDBContext _context;
//public SearchDepartment(ApplicationDBContext context){
//private SimpleTableDBContext _context;
//public SearchDepartment(SimpleTableDBContext context){
// _context= context;
//}
public static SearchDepartment FromSearch(GeneratorFromDB.SearchCriteria sc, eDepartmentColumns colToSearch, string value)
Expand Down

0 comments on commit 28a2041

Please sign in to comment.